En el campo de las optimizaciones del compilador , las expresiones disponibles es un algoritmo de análisis que determina para cada punto del programa el conjunto de expresiones que no necesitan ser recalculadas. Se dice que esas expresiones están disponibles en ese momento. Para estar disponible en un punto del programa, los operandos de la expresión no deben modificarse en ninguna ruta desde la aparición de esa expresión hasta el punto del programa.
El análisis es un ejemplo de un problema de análisis de flujo de datos hacia adelante . Se mantiene un conjunto de expresiones disponibles. Cada declaración se analiza para ver si cambia los operandos de una o más expresiones disponibles. Esto produce conjuntos de expresiones disponibles al final de cada bloque básico , conocido como inicio en términos de análisis de flujo de datos. Una expresión está disponible al comienzo de un bloque básico si está disponible al final de cada uno de los predecesores del bloque básico. Esto da un conjunto de ecuaciones en términos de conjuntos disponibles, que pueden resolverse mediante un algoritmo iterativo.
El análisis de expresión disponible se utiliza para realizar la eliminación global de subexpresiones comunes (CSE). Si una expresión está disponible en un punto, no es necesario volver a evaluarla.
Referencias
- Aho, Sethi & Ullman: Compiladores: principios, técnicas y herramientas Addison-Wesley Publishing Company 1986