我有一个与 opt 工具配合使用的 ModulePass,但我无法弄清楚如何让它在命令行中可用。我目前使用通行证的工作流程是:
- clang -c -emit-llvm [c-源代码文件]
- llvm-link [llvm 位码文件]
- opt -load [PassName].so -[pass-name] [链接的 llvm 文件]
- llc [生成的位码文件]
- gcc [生成的汇编文件] -o [目标]
我想让我的 pass 与 clang 命令行集成,这样它就可以作为现有软件(例如 c++ 标准库)构建的一部分被调用,而不必为我编译的每个东西重新构建整个构建系统。我已经看到有关如何执行此操作的提示,但我无法将这些部分组合成一个工作设置。
使用 Clang 自动运行 LLVM Pass准确描述了我想要的,但该方法在 LLVM 3.4 中似乎已被弃用(PassManagerBuilder 已移至旧命名空间)。
LLVM - 使用 clang 自动运行 Own Pass似乎解决了基本问题,但我希望我可以做到这一点而不必修改 clang(这似乎是那里的建议)。
使用 LLVM 3.4 从 clang 获取新通行证的最佳方法是什么?