Single Static Assignment to postać programu używana przez kompilatory w trakcie optymalizacji, w której każdej zmiennej wartość przypisuje się tylko raz.
Np. dla programu: a = read(); b = a + 2; a = a + 1; f(a, b);
Postać SSA to:
a1 = read(); b1 = a1 + 2; a2 = a1 + 1; f(a2, b1);
Jeśli wartość zmiennej w danym użyciu może pochodzić z kilku różnych przypisań, używa się specjalnej funkcji Φ.
Dla: a = 2; if (b > 0) a = 4; f(a);
Postacią SSA jest: a1 = 2; if (b > 0) a2 = 4; a3 = Φ(a1, a2); f(a3);
Postać SSA ułatwia wiele rodzajów optymalizacji. Najprostszą jest propagacja stałych – jeśli wiemy, że do danej zmiennej SSA została przypisana pewna wartość, możemy zastąpić wszystkie użycia tej zmiennej przez daną stałą, nawet jeśli w oryginalnym programie zmienna ta była używana też do innych celów.
Więzy Można też na tej postaci dokonywać łatwych wyliczeń więzów. Np. jeśli wiemy, że w programie jest wykonywany test czy a3 > 0, i że a3 = Φ(a1, a2), możemy sprawdzić czy test ten jest spełniony nawet bez znajomości dokładnej wartości a3.
Np.