我已经实现了一个将控制流图转换为最小ssa的程序(我非常确定它是正确的(参见here))。现在我正在尝试实现复制传播。我已经在很大程度上实现了它,但我不确定当我们传播的变量在phi函数中时该怎么做。假设我有一个要传播的变量:
z_0 = y_1此外,z_0在一个phi函数中:
z_1 = PHI(z_0, z_1)现在,当传播时,我应该对phi函数中的z_0做什么(因为在传播完成后,我将删除z_0的定义)?我应该将z_0传播到phi函数吗?使phi函数看起来像这样?:
z_1 = PHI(y_1, z_1)发布于 2021-04-18 03:01:12
是。在拷贝传播中,所有对z0的使用都会被y1所取代。正如@rici所暗示的那样,有多种边缘情况需要处理,因为拷贝传播非常擅长破坏phi节点/无意中改变它们的语义。
其中一些问题被封装在“丢失副本问题”和“丢失交换问题”中。
https://stackoverflow.com/questions/63040989
复制相似问题