首页 > 解决方案 > 在 llvm 6 中使用 PassManager

问题描述

我正在尝试将 llvm 3.6 代码更新为 llvm 6.0,但我不知道如何在此版本中使用 PassManager。

我在 3.6 中使用了以下代码:

llvm::PassManager pm;
pm.add(new MyPass);
pm.run();

编译器拒绝此代码:错误:使用推导类型“llvm::PassManager”声明变量“pm”需要初始化器 llvm::PassManager pm;

我不知道需要什么初始化程序,我在 LLVM 的源代码中看到 PassManager 有一个默认构造函数。

我错过了什么?

标签: c++llvm

解决方案


它应该llvm::legacy::PassManager不仅仅是llvm::PassManager. 要使用它,您需要包含 LegacyPassManager.h。( #include "llvm/IR/LegacyPassManager.h")

llvm::PassManager 实际上是一个类模板


推荐阅读