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

gcc tail call optimization with -O2 but not -O3

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

我认为这不准确。从 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. 
w=14=SHRTFM。 w=12=st w=10=sh w=14=sh(w=11=sh)sh=12=sh