如何在 LLVM LoopPass 中进行标量演化分析?

How to get Scalar Evolution analysis in a LLVM LoopPass?

我需要在 LLVM 循环传递中获取 ScalarEvolution 对象。我知道我们可以从 LoopStandardAnalysisResults 使用新的通行证管理器时的对象。是否可以使用旧的/传统的循环传递来获得 scalarEvolution 分析?

经过一些代码搜索,我发现我们可以像下面那样做:

  bool runOnLoop(Loop *L, LPPassManager &LPM) override {

    auto *SE = getAnalysisIfAvailable<ScalarEvolutionWrapperPass>();
}