[Bug rtl-optimization/35404] ra-conflict does not handle subregs optimally

steven at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Mar 10 21:49:00 GMT 2008



------- Comment #3 from steven at gcc dot gnu dot org  2008-03-10 21:48 -------
IRA does not handle this either with -fno-split-wide-types.  Left is IRA as-is
with -O2 -fomit-frame-pointer.  Right is same options + -fno-split-wide-types.

        .file   "t.c"                           .file   "t.c"
        .text                                   .text
        .p2align 4,,15                          .p2align 4,,15
.globl _foo                             .globl _foo
        .def    _foo;   .scl    2;              .def    _foo;   .scl    2;
_foo:                                   _foo:
        subl    $12, %esp                       subl    $12, %esp
        movl    %ebx, 4(%esp)         |         movl    %ebx, (%esp)
        movl    %esi, 8(%esp)         |         movl    %esi, 4(%esp)
                                      >         movl    %edi, 8(%esp)
                                      >         call    _bar
                                      >         movl    %eax, %esi
                                      >         movl    %edx, %edi
        call    _bar                            call    _bar
        movl    %eax, %ebx                      movl    %eax, %ebx
                                      >         orl     %esi, %ebx
        movl    %edx, %esi                      movl    %edx, %esi
        call    _bar                  |         orl     %edi, %esi
        orl     %ebx, %eax            |         movl    %ebx, %eax
        orl     %esi, %edx            |         movl    8(%esp), %edi
        movl    4(%esp), %ebx         |         movl    %esi, %edx
        movl    8(%esp), %esi         |         movl    (%esp), %ebx
                                      >         movl    4(%esp), %esi
        addl    $12, %esp                       addl    $12, %esp
        ret                                     ret
        .def    _bar;   .scl    2;              .def    _bar;   .scl    2;


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-03-10 21:48:33
               date|                            |


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



More information about the Gcc-bugs mailing list