------- Comment #6 from rguenth at gcc dot gnu dot org  2007-07-05 08:41 -------
For 4.1.x I get

kernel:
.LFB2:
        subq    $8, %rsp
.LCFI0:
        movl    $1, %edi
        call    gen_int
        movl    a(%rip), %eax
        movl    %eax, %edx
        andl    $3, %edx
        addl    %edx, %eax
        movl    %eax, a(%rip)
        movl    b(%rip), %eax
        movl    %eax, %edx
        orl     $3, %edx
        addl    %edx, %eax
        movl    %eax, b(%rip)
        movl    a+4(%rip), %eax
        movl    %eax, %edx
        andl    $3, %edx
        addl    %edx, %eax
        movl    %eax, a+4(%rip)
        movl    b+4(%rip), %eax
        movl    %eax, %edx
        orl     $3, %edx
        addl    %edx, %eax
        movl    %eax, b+4(%rip)
        addq    $8, %rsp
        ret

while with trunk we have

kernel:
.LFB2:
        subq    $8, %rsp
.LCFI0:
        movl    $1, %edi
        call    gen_int
        testl   %eax, %eax
        je      .L2
        movl    a(%rip), %edx
        movl    %edx, %eax
        andl    $3, %eax
        addl    %edx, %eax
        movl    b(%rip), %edx
        movl    %eax, a(%rip)
        movl    %edx, %eax
        orl     $3, %eax
        addl    %edx, %eax
        movl    %eax, b(%rip)
.L7:
        movl    a+4(%rip), %edx
        movl    %edx, %eax
        andl    $3, %eax
        addl    %edx, %eax
        movl    b+4(%rip), %edx
        movl    %eax, a+4(%rip)
        movl    %edx, %eax
        orl     $3, %eax
        addl    %edx, %eax
        movl    %eax, b+4(%rip)
        addq    $8, %rsp
        ret
        .p2align 4,,10
        .p2align 3
.L2:
        movl    a(%rip), %edx
        movl    %edx, %eax
        andl    $3, %eax
        addl    %edx, %eax
        movl    b(%rip), %edx
        movl    %eax, a(%rip)
        movl    %edx, %eax
        orl     $3, %eax
        addl    %edx, %eax
        movl    %eax, b(%rip)
        jmp     .L7
.LFE2:

so, no, this is not yet fixed.


-- 


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

Reply via email to