我已经实现了一个将控制流图转换为最小 ssa 的程序(我很确定它是正确的(参见此处))。现在我正在尝试实现复制传播。我已经实现了大部分,但我不确定当我们传播的变量在 phi 函数中时该怎么做。假设我有一个要传播的变量:
z_0 = y_1
此外,z_0
在 phi 函数中:
z_1 = PHI(z_0, z_1)
现在,在传播时,我应该z_0
在 phi 函数中做什么(因为传播完成后,我将删除 的定义z_0
)?我应该传播z_0
到 phi 函数吗?使得 phi 函数看起来像这样?:
z_1 = PHI(y_1, z_1)