

int i; float x; x+i;
Dado el árbol de la expresión PLUS(VAR, VAR),
el analizador de tipos introducirá un nodo intermedio
INT2FLOAT para indicar la necesidad de la conversión
y especificará el tipo de PLUS que se usa:
PLUSFLOAT(VAR, INT2FLOAT(VAR)).
Una transformación árbol de optimización que entra en este punto es la conversión de tipo en tiempo de compilación de las constantes. Por ejemplo, dados los dos programas:
float X[N];
int i;
for(i=0; i<N; i++) {
X[i] = 1;
}
|
float X[N];
int i;
for(i=0; i<N; i++) {
X[i] = 1.0;
}
|
los efectos sobre el rendimiento serán lamentables
si el compilador no realiza la conversión de la constante entera 1
del programa de la izquierda en tiempo de compilación sino que la conversión
se deja a una subrutina de conversión que es llamada en tiempo de ejecución.
En tal caso se obtendrían rendimientos completamente diferentes para los
programas en la izquierda y en la derecha.

