【问题标题】:Modifying optimizations performed by Clang/LLVM compiler修改 Clang/LLVM 编译器执行的优化
【发布时间】:2020-02-10 11:58:05
【问题描述】:

the Clang/LLVM compilerLLVM 后端 在 IR(中间表示)上运行各种 pass 以进行优化。

  • 如何知道在任何 -O1/2/3 模式下正在运行的所有通道?
  • 有没有办法删除其中一些通行证并添加一些其他自定义书面通行证?
  • 另外,需要注意的传递之间是否存在任何依赖关系?

【问题讨论】:

    标签: clang llvm compiler-optimization llvm-clang llvm-ir


    【解决方案1】:

    如何知道在任何 -O1/2/3 模式下正在运行的所有通道

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

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

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

    另外,需要注意的pass之间是否存在依赖关系

    LLVM 开发人员试图使所有通道独立(据我所知,它们大部分是独立的)。如果您想使用某个 pass 中的信息,则应将该 pass 注册为 Analysis(即不转换代码但收集信息的 pass)。你可以在here阅读更多关于分析依赖的内容。

    我希望这能回答你的问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 2020-07-19
      • 2012-12-16
      • 1970-01-01
      相关资源
      最近更新 更多