Clang/LLVM 编译器的LLVM 后端在IR(中间表示)上运行各种传递以进行优化。
- 如何知道在任何 -O1/2/3 模式下运行的所有通道是什么?
- 有没有办法删除其中一些通行证并添加一些其他自定义书面通行证?
- 此外,需要注意的通行证之间是否存在任何依赖关系?
Clang/LLVM 编译器的LLVM 后端在IR(中间表示)上运行各种传递以进行优化。
所有与优化管道构建相关的逻辑都集中在PassBuilder.cpp中。在那里,您可以看到优化级别的直接条件。
当然,只需将其添加到该源文件中。
LLVM 开发人员试图使所有通道独立(据我所知,它们大部分是独立的)。如果您想使用来自某个传递的信息,则该传递应注册为分析(即不转换代码但收集信息的传递)。您可以在此处阅读有关分析依赖性的更多信息。
我希望这回答了你的问题!