使用-O2但不是-O3的gcc尾调用优化

时间:2015-04-18 18:24:45

标签: gcc compiler-optimization tail-recursion

我在一些地方看过gcc尝试使用-O2而不是-O3进行尾调用优化。为什么后者优于前者?前者应该执行较少的优化。

2 个答案:

答案 0 :(得分:2)

我认为这不准确。从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. 

答案 1 :(得分:0)

RTFM。

  

-O3打开-O2

指定的所有优化

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