SSA
- SSA(Static Single Assignment,静态单一赋值)
- 静态 –> 只依赖于代码(Code)或文本(Text)
- 单一 –> 单一名称
- 赋值 –> 比如y = x + 1
- SSA的应用
- GCC、LLVM、Java虚拟机HotSpot、JavaScript V8引擎
- 即时(Just-In-Time,JIT)编译器,用于Java的字节码、.NET的MSIL、LLVM的bitcode
- SSA的例子
- 同一变量的不同赋值,使用不同名称
- 控制流(Control Flow)使用Phi函数表示
// Non-SSA
x = input()
if (x == 42)
y = 1
else
y = x + 2
print(y)
// SSA
x = input()
if (x == 42)
y1 = 1
else
y2 = x + 2
y3 = Phi(y1, y2)
print(y3)