【问题标题】:gcc tail call optimization with -O2 but not -O3使用 -O2 而不是 -O3 的 gcc 尾调用优化
【发布时间】:2015-04-18 18:24:44
【问题描述】:

我在一些地方读到gcc 尝试在使用-O2 调用时执行尾调用优化,但不使用-O3。为什么后者的优化不如前者?前者应该执行较少的优化。

【问题讨论】:

  • “在几个地方”:注意指出这些吗?

标签: gcc compiler-optimization tail-recursion


【解决方案1】:

我认为这不准确。在 gcc 文档 (https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html) 中,标志 -foptimize-sibling-calls 负责消除尾递归,并在 -O2 和 -O3 中启用。

-foptimize-sibling-calls
    Optimize sibling and tail recursive calls.

    Enabled at levels -O2, -O3, -Os. 

【讨论】:

    【解决方案2】:

    实时调频。

    -O3 开启 -O2 指定的所有优化

    (https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#Optimize-Options)

    【讨论】:

      猜你喜欢
      • 2015-05-06
      • 2015-12-25
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      相关资源
      最近更新 更多