https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118430
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Oh for -O2, this is IPA VRP coming into play. It is turning: [[gnu::musttail]] return tail_call2(opcode); into tail_call2(opcode); return 2; Which needs to go in the opposite direction and such. Note if you use noipa instead of noinline, this testcase will work. I also highly doubt this is representative of the CPython code either.