最大固定点失败的情况

时间:2016-04-26 06:50:09

标签: compiler-construction llvm compiler-optimization

对于理论研究,我已经实现了Meet在所有路径上进行持续传播。由于常数传播的网格是非分布式的,因此预计最大不动点计算和满足所有路径会得到不同的结果。任何人都可以提供这样的示例程序。

Q2:还有一个程序,其中llvm中的稀疏条件常量传播通过(-sccp)将无法检测到常量。

1 个答案:

答案 0 :(得分:2)

取自here的例子:

if (...)
    x = 1;
else
    x = -1;
y = x * x;

使用常量传播方法,x的值在if语句之后不是常量。因此,y的值不是常数。形式上,如果F是最后一个语句的函数,我们有F(1 ⨆ -1) = F(⊤) = ⊤

使用MOP,y的值是来自两个可能路径的连接,因此被称为1。形式上,F(1) ⨆ F(-1) = 1 ⨆ 1 = 1