LLVM-使用clang自动运行Own Pass
LLVM - Run Own Pass automatically with clang
我为llvm编写了一些自己的通行证,以便将它们与clang一起使用。
我在llvm中集成了它们(不是动态加载的)。当我键入时,它们甚至列在可用优化:部分
opt --help-hidden
当我调用clang:时,我想现在自动运行自己的一个通行证,作为最后一个
clang ./hello.bc -o ./hello
甚至使用c码:
clang ./hello.c -o ./hello
当我手动使用opt运行通行证时,修改后的ByteCode会被生成并写入一个新的.bc文件:
opt -my-pass < ./hello.bc > ./hello_optimized.bc
当我用clang编译修改后的.bc时,正常的clang优化会再次运行,这会破坏我手动执行的过程的优化:
clang -O0 -m32 ./hello_optimized.bc -o ./hello_optimized
我的问题是:
- 我如何才能自动运行我自己的书面通行证,并将叮当声作为最后一次通行证
- 另一个可能的解决方案是完全停用所有通行证,或者至少消除clang/opt的死代码/功能。我怎么能这么做
正确的方法是让clang将您的通行证添加到它构建的通行证管理器中。请参阅clang/lib/CodeGen/BackendUtil.cpp:void EmitAssemblyHelper::CreatePasses()
了解如何处理消毒剂。
您可以直接使用-Xclang运行自己的clang通行证。
clang++ -Xclang -load -Xclang ./libmypass.so input.cpp
源
到目前为止,遗留的通行证管理器已被删除。我在这里写了一个完整的clang+新通行证管理器的例子(对我有用)。工作示例
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在C应用程序中运行C++(带有STL)函数
- 运行程序时出现问题
- 控制允许动态运行c++的并发操作数
- LLVM-使用clang自动运行Own Pass