This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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



------- Comment #17 from steven at gcc dot gnu dot org  2010-01-09 22:17 -------
In GCC 4.4 only one crossjump happens. The second crossjump does not happen
because the basic blocks are not identical. The register allocator has not
allocated the registers in the same way:
                                        .L2:
        movl    a, %edx                         movl    a, %eax
        movl    %edx, %ecx                      movl    %eax, %edx
        andl    $3, %ecx                        andl    $3, %edx
        leal    (%ecx,%edx), %edx               leal    (%edx,%eax), %eax
        movl    %edx, a                         movl    %eax, a
        movl    b, %edx                         movl    b, %eax
        movl    %edx, %ecx                      movl    %eax, %edx
        orl     $3, %ecx                        orl     $3, %edx
        leal    (%ecx,%edx), %edx               leal    (%edx,%eax), %eax
        movl    %edx, b                         movl    %eax, b
                                                jmp     .L7

The problem in this case is thus, that there is no pre-RA crossjumping pass
anymore.

Works for me with my patch for PR20070.


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |20070
      Known to fail|                            |4.4.0 4.4.1 4.4.2 4.5.0
            Summary|[4.3 Regression] Fails to   |[4.3/4.4/4.5 Regression]
                   |cross-jump                  |Fails to cross-jump


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]