1

在 SSA 形式中,从 phi 分配的变量最终具有适当的值,具体取决于到达它的路径。但是,如果可能通过一些不寻常的路径,对 phi 的两个输入都已分配,会发生什么?例如

a = 1
...
b = 2
...
c = phi(a, b)

它是否被定义为像一个联合一样,使得 c 以值 2 结束,因为那是最后一个赋值?

4

1 回答 1

5

对于SSA(Single Static Assignment),一个phi节点的两个操作数应该是一个特定变量的两个定义。

对于您的示例,这意味着b=2, 和a=1是单个变量的两个定义。并且因为b=2将永远追赶a=1。因此,定义b=2将杀死 的定义a=1。所以,你phi(a,b)实际上是非法的。

phi的操作数通常是来自程序的两个不同执行阶段的定义。

于 2015-05-21T13:31:41.160 回答