在GCC中,“树优化”与“ RTL优化”是什么?

时间:2019-03-04 09:41:18

标签: gcc compiler-optimization

当我针对GCC提交有关错过的优化的错误时,无论是将其提交到“ rtl-optimizations”还是“ tree-optimizations”下,我总是一头雾水。我在GCC bugzilla上查看了components page,但那里并没​​有真正解释。

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

1 个答案:

答案 0 :(得分:2)

部分答案:

区别在于GCC编译器中(半编译)程序的不同内部表示形式。这实际上是一个相当复杂的问题,但出于此问题的目的:

  • 有一个基于abstact-syntax-tree的表示形式,称为GIMPLE。在此表示形式上进行了一些优化遍历。参见this list。这些称为“树”或“树-ssa”优化。
  • Register Transfer Language(或RTL)中包含更高级别的“较低级别”表示。在此表示形式上进行其他优化遍历,此过程比树形优化晚。这是list of these。他们称为“ rtl”优化。

话虽这么说,但我没有一个简单的经验法则来区分哪些优化属于何处。


有关更多信息,您可能需要阅读GCC internals指南,在该指南中可以找到优化遍历的列表。