两个IR一样的代码,分析结果不一样
【路人】DZ21330014-李骁(924273413) 2021/10/11 22:08:30
请教大家一个问题,constant1和constant2这两个方法:
他们的IR都长这样:
在constant2这个方法里,在8:nop处meet的时候得到了{a=NAC}的结果,这个没什么问题。
而在constant1这个方法里,虽然两个分支里的a其实是不同的变量,但IR中还是把他们都处理为a了。然后我就遇到一个问题,在8: nop这个程序点meet的时候,框架里的MapFact似乎认为分支1里的a和分支2里的a不是同一个Var……于是合并出了{a=1, a=2}这样的结果,而不是{a=NAC}。
按理说,constant1和constant2的IR“长得一样”,结果应该也一样……这是为什么呢?