------- Comment #5 from steven at gcc dot gnu dot org  2008-11-22 09:51 -------
I created a t.c with both functions in it:

unsigned int f1(unsigned int i, unsigned int n) {++i; if (i == n) ++i; return
i;}
unsigned int f2(unsigned int i, unsigned int n) {++i; i += i == n; return i;}

With today's trunk on x86_64, I get:

        .file   "t.c"
        .text
        .align 16
.globl f1
        .type   f1, @function
f1:
.LFB0:
        leal    1(%rdi), %eax
        addl    $2, %edi
        cmpl    %esi, %eax
        cmove   %edi, %eax
        ret
.LFE0:
        .size   f1, .-f1
        .align 16
.globl f2
        .type   f2, @function
f2:
.LFB1:
        addl    $1, %edi
        xorl    %eax, %eax
        cmpl    %esi, %edi
        sete    %al
        addl    %edi, %eax
        ret
.LFE1:
        .size   f2, .-f2
        .section        .eh_frame,"aw",@progbits
.Lframe1:
        .long   .LECIE1-.LSCIE1
.LSCIE1:
        .long   0x0
        .byte   0x1
        .string "zR"
        .byte   0x1
        .byte   0x78
        .byte   0x10
        .byte   0x1
        .byte   0x3
        .byte   0xc
        .byte   0x7
        .byte   0x8
        .byte   0x11
        .byte   0x10
        .byte   0x1
        .align 8
.LECIE1:
.LSFDE1:
        .long   .LEFDE1-.LASFDE1
.LASFDE1:
        .long   .LASFDE1-.Lframe1
        .long   .LFB0
        .long   .LFE0-.LFB0
        .byte   0x0
        .align 8
.LEFDE1:
.LSFDE3:
        .long   .LEFDE3-.LASFDE3
.LASFDE3:
        .long   .LASFDE3-.Lframe1
        .long   .LFB1
        .long   .LFE1-.LFB1
        .byte   0x0
        .align 8
.LEFDE3:
        .ident  "GCC: (GNU) 4.4.0 20081122 (experimental) [trunk revision
142117]"
        .section        .note.GNU-stack,"",@progbits


So still not the same functions.

For x86 (32bit) with -march=core2, I get similar code (f1 with a cmove).
Without a -march option, I get code with a jump.


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2007-01-22 00:29:40         |2008-11-22 09:51:57
               date|                            |


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

Reply via email to