MOP 和 MFP 不同的示例程序
Sample program where MOP and MFP are different
我正在研究编译器优化中Meet over all path(MOP) 和Maximum Fixed Point(MFP) 之间的比较。据说 MFP 是 MOP 的一个子集。但是我找不到 MFP 和 MOP 不同的例子。谁能帮我解决 MFP 和 MOP 给出不同结果的任何示例程序。
Kam 和 Ullman refer this 在 "Monotone Data Flow Analysis Framework" 中有这样一个例子。
示例程序是
if(<some codition>) {
A = 2;
B = 3;
}
else {
A = 3;
B = 2;
}
C=A+B;
如果我们考虑上述程序的常数传播分析,变量 C 在任何情况下都是常数。如果 if statement
条件的计算结果为真或假,则该值将为 5
。但是,如果我们对上述程序执行不动点分析,C
将永远不会被视为常数,而 MOP 分析将提供 C
是常数的信息。
我正在研究编译器优化中Meet over all path(MOP) 和Maximum Fixed Point(MFP) 之间的比较。据说 MFP 是 MOP 的一个子集。但是我找不到 MFP 和 MOP 不同的例子。谁能帮我解决 MFP 和 MOP 给出不同结果的任何示例程序。
Kam 和 Ullman refer this 在 "Monotone Data Flow Analysis Framework" 中有这样一个例子。
示例程序是
if(<some codition>) {
A = 2;
B = 3;
}
else {
A = 3;
B = 2;
}
C=A+B;
如果我们考虑上述程序的常数传播分析,变量 C 在任何情况下都是常数。如果 if statement
条件的计算结果为真或假,则该值将为 5
。但是,如果我们对上述程序执行不动点分析,C
将永远不会被视为常数,而 MOP 分析将提供 C
是常数的信息。