鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

将Pass动态注册到PassBuilder中

调用registerVectorizerStartEPCallback和PM.addPass,在PM.addPass()中更换为自己实现的Pass,就可以向FunctionPassManager添加一个自己实现的Pass的实例,从而动态注册成功了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
extern "C" LLVM_ATTRIBUTE_WEAK ::llvm::PassPluginLibraryInfo
llvmGetPassPluginInfo() {
    return {LLVM_PLUGIN_API_VERSION, "Bye", LLVM_VERSION_STRING,
          [](PassBuilder &PB) {
            PB.registerVectorizerStartEPCallback(
                [](llvm::FunctionPassManager &PM, OptimizationLevel Level) {
                  PM.addPass(Bye());
                });
          }};
}