[Bug middle-end/30905] [4.3 Regression] Fails to cross-jump

rahul at icerasemi dot com gcc-bugzilla@gcc.gnu.org
Thu Jun 11 17:38:00 GMT 2009



------- Comment #15 from rahul at icerasemi dot com  2009-06-11 17:38 -------
GCC4.4 is still missing this fix. GCC-4.4.1 (20090507) on x86_64 produces the
following with O2/O3

kernel:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $24, %esp
        movl    $1, (%esp)
        call    gen_int
        testl   %eax, %eax
        je      .L2
        movl    a, %edx
        movl    %edx, %ecx
        andl    $3, %ecx
        leal    (%ecx,%edx), %edx
        movl    %edx, a
        movl    b, %edx
        movl    %edx, %ecx
        orl     $3, %ecx
        leal    (%ecx,%edx), %edx
        movl    %edx, b
.L7:
        movl    a+4, %eax
        movl    %eax, %edx
        andl    $3, %edx
        leal    (%edx,%eax), %eax
        movl    %eax, a+4
        movl    b+4, %eax
        movl    %eax, %edx
        orl     $3, %edx
        leal    (%edx,%eax), %eax
        movl    %eax, b+4
        leave
        ret
        .p2align 4,,7
        .p2align 3
.L2:
        movl    a, %eax
        movl    %eax, %edx
        andl    $3, %edx
        leal    (%edx,%eax), %eax
        movl    %eax, a
        movl    b, %eax
        movl    %eax, %edx
        orl     $3, %edx
        leal    (%edx,%eax), %eax
        movl    %eax, b
        jmp     .L7

Any reason why this shouldn't go into 4.4?


-- 

rahul at icerasemi dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rahul at icerasemi dot com


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



More information about the Gcc-bugs mailing list