¿Hay alguna manera de indicarle al compilador que usted sabe que el valor de una variable en particular debe estar dentro de un rango particular en un cierto punto del código, para ayudar al compilador a optimizar? Estoy escribiendo una biblioteca que hace posible conocer el rango de algunas variables en tiempo de compilación, y sería ingenioso si de alguna manera pudiera comunicar esta información al compilador para que el compilador pueda usarla para la optimización. Me gustaría agregar soporte para cualquier compilador en el que funcione, incluso si no se puede hacer que funcione para todos ellos (parece el tipo de cosa que algunos compiladores podrían tener como extensión, pero no lo he hecho). encontrado alguno). Sé que podría escribir algo como esto:¿Cómo comunicar información de rango al compilador de C++?
if(x < COMPILE_TIME_MIN or x > COMPILE_TIME_MAX)
return;
// compiler will assume for code below that x is in range COMPILE_TIME_MIN..COMPILE_TIME_MAX
Pero eso es un control del tiempo de ejecución. Tal vez haya algún truco para que el compilador haga una suposición sobre el rango sin dicho control?
¿Tiene alguna idea sobre qué tipo de optimización ayudaría? –
Si usa plantillas, puede hacer un tiempo de compilación comprobando si se conoce toda su información en tiempo de compilación. –
Está utilizando la frase "el compilador", pero nunca nos dice cuál. Presumiblemente, te refieres a alguna versión de g ++ o Visual C++, pero eso no está claro. El estándar no aborda la optimización en general, por lo que cualquier cosa que pueda hacer aquí es específica de la implementación. –