【问题标题】:In GCC, what are "tree optimizations" vs "RTL optimizations"?在 GCC 中,什么是“树优化”与“RTL 优化”?
【发布时间】:2019-03-04 09:41:17
【问题描述】:

当我向 GCC 提交有关错过优化的错误时,我总是不知是否应该将其提交到“rtl-optimizations”或“tree-optimizations”下。我查看了 GCC bugzilla 上的 components page,但那里并没​​有真正解释。

那么,这两种优化是什么,或者更确切地说,它们之间有什么区别?

【问题讨论】:

  • 请注意,提交错误时,如果您弄错了也没关系,其他人会为您修复它。实际上,甚至可能没有“正确”的,类似的优化可以在不同的地方以不同的方式实现。

标签: gcc compiler-optimization


【解决方案1】:

部分答案:

区别与 GCC 编译器中(半编译)程序的不同内部表示有关。这实际上是一个相当复杂的问题,但就本问题而言:

  • 有一个基于abstact-syntax-tree 的表示,称为GIMPLE。对此表示进行了一些优化。见this list。这些被称为Tree OptimizationsTree-SSA Optimizations
  • Register Transfer Language(或 RTL)中有一个更高级别的“较低级别”表示。在此表示上进行其他优化传递,在过程中比树优化更晚;这是list of these。这些是调用 RTL 优化

话虽如此,我还没有给出一个简单的经验法则来区分哪些优化属于哪里。


如需更多信息,您可能需要阅读GCC internals 指南,我在其中找到了优化通道列表。

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 2012-09-20
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2010-09-12
    • 2021-11-22
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多