我想创建一个分析传递,可以像LLVM附带的'premade'分析传递一样使用,即使用getAnalysisUsage等。
我真的很难找到关于如何做到这一点的文档,或者做一些相同的事情。
我确信这是一个相当复杂的过程,但即使是正确程序的链接也是非常宝贵的。我确信我不是唯一一个遇到过这个问题的人,所以这对其他人也有帮助。
答案 0 :(得分:3)
分析只是一个不会修改字节码并存储可以在以后检索的内部状态的传递。
所以你需要做的就是编写LLVM传递,将其注册为分析(RegisterPass
的第三和第四个参数设置为true
),并提供一个公共方法来访问内部状态
附在header提供的教程中,有一个git repo。您有兴趣:
{{3}},尤其是
的定义void getAnalysisUsage(AnalysisUsage const &) const override;
并致电
getAnalysis<ReachableIntegerValuesPass>()