https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78810
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to rguent...@suse.de from comment #2) > On Fri, 16 Dec 2016, marxin at gcc dot gnu.org wrote: > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78810 > > > > --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- > > Sorry, correct wording is that Ruby 2.3 does not survive its regression > > tests. > > Did you analyze why? vparser is unused here ... it looks like ruby > is maybe trying to avoid a tail/sibling call here? > > That said, the optimization is perfectly valid. Not analyzed deeper, however also clang does a tail-call: .Ltmp4: .cfi_offset %r14, -16 movl %ecx, %ebx movq %rsi, %r14 callq _Z10get_parserv movslq %ebx, %rdx movq %rax, %rdi movq %r14, %rsi addq $8, %rsp popq %rbx popq %r14 jmp _Z9yycompileP13parser_paramsmm # TAILCALL Let me check it if primary motivation is to prevent tail call.