我有一个ModulePass与opt工具一起工作,但我无法弄清楚如何在命令行中使其可用。我使用我的通行证当前的工作流程是:在clang命令行上提供LLVM ModulePass
- 铛-c -emit-LLVM [C源代码文件]
- LLVM链接[LLVM位码文件]
- 选择-load [PassName。所以 - [传递名称] [链接LLVM文件]
- LLC [导致位码文件]
- GCC [编译得到的汇编文件] -o [目标]
我想获得我的通行证与整合铛命令以便它可以作为现有软件构建的一部分被调用(例如, C++标准库),而不必为我编译的每个东西重新构建整个构建系统。我已经看到了如何做到这一点的提示,但我无法将这些部分放在一起工作。
Run an LLVM Pass Automatically with Clang正确地描述了我想要的内容,但该方法在LLVM 3.4中似乎已被弃用(PassManagerBuilder已移至旧的名称空间)。
LLVM - Run Own Pass automatically with clang似乎解决了基本问题,但我希望我可以做到这一点,而不必修改clang(这似乎是什么建议那里)。
什么是使用LLVM 3.4从clang制作新传递的最佳方式?
感谢您的答案,我会继续PassManagerBuilder设置。 – Erik 2014-11-30 13:32:05
它适用于llvm-3.7。注册ModulePass的注释:将EP_EarlyAsPossible改为EP_ModuleOptimizerElely否则llvm会将其视为FunctionPass并尝试调用runOnFunction。 – xywang 2015-12-16 03:15:06