Static Single Assignment
স্ট্যাটিক সিঙ্গেল অ্যাসাইনমেন্ট
IR-এর এমন শৃঙ্খলা — প্রতিটা variable ঠিক একবার assign হয়; branch merge-এ phi function version বেছে নেয়।
also: SSA
x = 1; x0 = 1
if (c) x = 2; ⇒ x1 = 2
use(x) x2 = φ(x0, x1)
use(x2)
- Def-use chain free: variable-এর নামই তার definition — use→def pointer chase লাগে না
- Constant propagation, dead code elimination, GVN — SSA-তে সবগুলো সরল ও local
- Construction: dominance frontier algorithm; destruction (out of SSA): phi → parallel copy → coalescing (regalloc-এর সাথে মিলে)
- প্রায় সব modern compiler backend (LLVM, GCC GIMPLE, V8 TurboFan) SSA-ভিত্তিক