http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51323
--- Comment #1 from David Kastrup <dak at gnu dot org> 2011-11-28 11:32:46 UTC --- -fno-optimize-sibling-calls avoids the problematic optimization. For no good reason at all, -fkeep-inline-functions, documented to do a completely unrelated non-optimization (namely emitting inline functions even when all uses of them had been inlined), will also switch off the problematic tail call optimization.