http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60159

            Bug ID: 60159
           Summary: improve code for conditional sibcall
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jay.foad at gmail dot com

If I compile this code for x86-64 I get:

$ cat jcc.c
extern int f(int x);
int g(int x) { return x > 3 ? f(x) : x; }

$ cc1 -quiet -O3 jcc.c -o -
...
g:
.LFB0:
        .cfi_startproc
        cmpl    $3, %edi
        jg      .L4
        movl    %edi, %eax
        ret
        .p2align 4,,10
        .p2align 3
.L4:
        jmp     f
        .cfi_endproc

This code would be simpler and shorter if the jg-to-jmp sequence was replaced
with a single "jg f" instruction.

I'm using gcc built from svn trunk r207717.

Reply via email to