【发布时间】:2014-06-01 14:06:35
【问题描述】:
我为 llvm 编写了一些自己的通行证,以便在 clang 中使用它们。
我将它们集成在 llvm 中(不是动态加载的)。当我键入时,它们甚至会列在 可用的优化: 部分:
opt --help-hidden
我现在想在我调用 clang 时自动运行我自己的一张通行证作为最后一张:
clang ./hello.bc -o ./hello
甚至使用 c 代码:
clang ./hello.c -o ./hello
当我使用 opt 手动运行我的 pass 时,会生成修改后的 ByteCode 并写入一个新的 .bc 文件:
opt -my-pass < ./hello.bc > ./hello_optimized.bc
当我用 clang 编译修改后的 .bc 时,会再次运行正常的 clang 优化,这会破坏我手动执行 pass 的优化:
clang -O0 -m32 ./hello_optimized.bc -o ./hello_optimized
我的问题是:
- 如何使用 clang 作为最后一个 pass 自动运行我自己的书面 pass?
- 另一种可能的解决方案是完全停用所有通道,或至少停用 clang/opt 的死代码/功能。我怎么能这样做?
【问题讨论】:
-
使用 clang -flto,并将你的 pass 序列传递给 gold lto 插件。
标签: c++ c compiler-construction clang llvm