SSA 即 Single Static Assignment 。也就是变量只会在初始化的时候确定一次,以后就不再会发生变化了。
SSA 是构建 DAG 图的基础,如果没有 SSA ,我们对于这样的代码:
tmp = 1
tmp = tmp + 1
tmp = tmp + 2就会发现如果根据上面构建 DAG 图,那么我们就会同时用 tmp 指向三个节点,这就很难再在 DAG 图上做优化。
而如果我们稍微改写成 SSA 形式:
tmp1 = 1
tmp2 = tmp1 + 1
tmp3 = tmp2 + 2就会发现容易分析很多。
普通的程序是可以改写成 SSA 程序的,在分支判断处,主要依赖的是 phi 指令。