使用-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
我在一些地方读到 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.