我正在为LLVM编写循环传递。我克隆并重新排列了循环,可以完成多次。
问题是,在我第一次这样做之后,SCEV应该变成SCEVUnknown
时变成SCEVAddRecExpr
类型。
但是,如果我使用第一个迭代的输出重新运行整个过程,它将正确地将它们标识为SCEVAddRecExpr
。
我已经尝试过调用Scalar Evolution的ForgetAllLoops
函数,但这不起作用。我还尝试从ScalarEvolution传递中调用runOnFuction
,但这也没有用。
我的问题是:在通过过程中,是否可以重新运行分析过程?或者如何让ScalarEvolution重新计算未知SCEV的SCEV值。