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 是常数的信息。