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.

Reply via email to