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