Static single assignment form
En compilation, Static single assignement form (abrégé en SSA) est une représentation intermédiaire du code source d'un programme dont la particularité est de ne permettre à une variable d'être affectée qu'une et une seule fois.
Benefices
L'intérêt principal de SSA est la simplification et l'amélioration des résultats de nombreuses optimisations, en simplifiant les propriétés des variables. Par exemple, soit le code suivant:
y := 1 y := 2 x := y
Les humains peuvent voir que la première affectation n'est pas nécessaire, car la valeur de y utilisée à la troisième ligne vient de la deuxième affectation de y. Un programme devrait faire une analyse d'atteinte des définitions pour le déterminer. Mais si le programme est sous la forme SSA, alors c'est immédiat:
y1 := 1 y2 := 2 x1 := y2
Les algorithmes d'optimisations des compilateurs autorisés ou bien largement améliorés par l'utilisation de la forme SSA incluent:
- la propagation de constantes
- l'élimination du code mort
- la réduction partielle de duplication
- la réduction de force
- l'[[allocation de registres]