Open LioTree opened 1 year ago
你好,Liveness的代码中似乎没有对phi指令进行处理。
比如2-Liveness.ll中的例子,BB3有两个前驱BB2和BB7,并且有两条phi指令:
phi
%.01 = phi i32 [ 1, %2 ], [ %6, %7 ] %.0 = phi i32 [ %0, %2 ], [ %8, %7 ]
因为%0来自BB2,%6和%8来自BB7,所以在计算OUTPUT(BB2)时,应该要把%6和%8这两个变量的活跃去掉,而在计算OUTPUT(BB7)时,应该要把%0去掉
%0
%6
%8
感谢指正! 之前其实有意识到这个问题。我在每个block中对其successor blocks中起始部分的phi指令进行了处理。改动在这个Commit。由于没有找到正确的测试文件,如有纰漏还请指正!
你好,Liveness的代码中似乎没有对phi指令进行处理。
比如2-Liveness.ll中的例子,BB3有两个前驱BB2和BB7,并且有两条
phi
指令:因为
%0
来自BB2,%6
和%8
来自BB7,所以在计算OUTPUT(BB2)时,应该要把%6
和%8
这两个变量的活跃去掉,而在计算OUTPUT(BB7)时,应该要把%0
去掉