对于理论研究,我已经实现了Meet在所有路径上进行持续传播。由于常数传播的网格是非分布式的,因此预计最大不动点计算和满足所有路径会得到不同的结果。任何人都可以提供这样的示例程序。
Q2:还有一个程序,其中llvm中的稀疏条件常量传播通过(-sccp)将无法检测到常量。
答案 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
。