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.