使用新PassManager实现自己的Pass
Pass的本质 Pass的本质是一种由LLVM定义的编程接口,其功能是遍历IR,对其进行分析Analyze或者变形Transform,来实现理论上可行的某种编译优化策略。一个符合LLVM定义的Pass应该满足如下要求 继承自llvm::Pass 或者llvm::Pass的子类 实现接口中定义的纯虚方法(入口),往往以runOnXXX(XXX &xxx)进行命名,如ModulePass中的virtual bool runOnModule(Module &M) = 0; 拥有一个可取任意值的静态成员static char ID=0 要对Pass进行注册,新旧管理器 LLVM Pass相关组件 llvm::Pass的子类 ModulePass CallGraphSCCPass FunctionPass LoopPass RegionPass BasicBlockPass在使用传统Pass管理器时,我们需要覆盖并实现这些Pass子类中的runXXX方法 对应头文件 llvm/Pass.h Analyses LLVM AnalysisManager 构建P....