Formulario de asignación única estática


En el diseño del compilador , el formulario de asignación única estática (a menudo abreviado como formulario SSA o simplemente SSA ) es una propiedad de una representación intermedia (IR), que requiere que cada variable se asigne exactamente una vez y que cada variable se defina antes de usarla. Las variables existentes en el IR original se dividen en versiones , las nuevas variables generalmente se indican con el nombre original con un subíndice en los libros de texto, de modo que cada definición tiene su propia versión. En formato SSA, las cadenas use-def son explícitas y cada una contiene un solo elemento.

SSA fue propuesto por Barry K. Rosen , Mark N. Wegman y F. Kenneth Zadeck en 1988. [1] Ron Cytron , Jeanne Ferrante y los tres investigadores anteriores de IBM desarrollaron un algoritmo que puede calcular el formulario SSA de manera eficiente. [2]

Uno puede esperar encontrar SSA en un compilador para Fortran , C o C++ , mientras que en los compiladores de lenguaje funcional , como los de Scheme y ML , generalmente se usa el estilo de paso de continuación (CPS). SSA es formalmente equivalente a un subconjunto de CPS de buen comportamiento que excluye el flujo de control no local, lo que no ocurre cuando se utiliza CPS como representación intermedia. [3] Entonces, las optimizaciones y transformaciones formuladas en términos de una se aplican inmediatamente a la otra.

La principal utilidad de SSA proviene de cómo simplifica y mejora simultáneamente los resultados de una variedad de optimizaciones del compilador , al simplificar las propiedades de las variables. Por ejemplo, considere este fragmento de código:

Los humanos pueden ver que la primera asignación no es necesaria y que el valor de yser usado en la tercera línea proviene de la segunda asignación de y. Un programa tendría que realizar un análisis de definición de alcance para determinar esto. Pero si el programa está en formato SSA, ambos son inmediatos:

Los algoritmos de optimización del compilador que están habilitados o fuertemente mejorados por el uso de SSA incluyen: