On GCC manual,
-foptimize-sibling-calls Optimize sibling and tail recursive calls.
-foptimize-sibling-calls
Optimize sibling and tail recursive calls.
I kn
the compiler considers two functions as being siblings if they share the same structural equivalence of return types, as well as matching space requirements of their arguments.
http://www.drdobbs.com/tackling-c-tail-calls/184401756