修改 Clang/LLVM 编译器执行的优化

Modifying optimizations performed by Clang/LLVM compiler

IR(中间表示)上 the Clang/LLVM compiler runs various passLLVM 后端 进行优化。

如何知道在任何 -O1/2/3 模式下 运行 所有通道是什么

所有与优化流水线构建相关的逻辑都集中在PassBuilder.cpp。在那里您可以看到优化级别的直接条件。

有没有办法删除其中一些通行证并添加一些其他自定义书面通行证

当然可以,只需将其添加到该源文件即可。

另外,pass之间有没有需要注意的依赖关系

LLVM 开发人员试图使所有通道独立(据我所知,它们在大多数情况下都是独立的)。如果您想使用来自某个通道的信息,该通道应注册为 Analysis(即不转换代码但收集信息的通道)。您可以在 here.

中阅读有关分析依赖性的更多信息

希望这能回答您的问题!