[Bug middle-end/54371] [4.8 Regression] jump tables are broken on n64 mips64-linux-gnu

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Aug 25 05:00:00 GMT 2012


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.8 Regression] a lot of   |[4.8 Regression] jump
                   |testcase failures on        |tables are broken on n64
                   |mips64-linux-gnu            |mips64-linux-gnu
                   |(soft-float) n64 only       |

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-08-25 05:00:18 UTC ---
It is obvious what is wrong from the assembly differences of
testsuite/gcc.c-torture/execute/ashldi-1.c :
--- old.s       2012-08-25 04:57:12.000000000 +0000
+++ new.s       2012-08-25 04:57:24.000000000 +0000
@@ -131,17 +131,17 @@ constant_shift:
        nop

        lwu     $2,8($fp)
-       dsll    $3,$2,3
+       dsll    $3,$2,2
        ld      $2,%got_page(.L69)($28)
        daddiu  $2,$2,%got_ofst(.L69)
        daddu   $2,$3,$2
-       ld      $2,0($2)
+       lw      $2,0($2)
        daddu   $2,$2,$28
        j       $2
        nop

        .rdata
-       .align  3
+       .align  2
        .align  2
 .L69:
        .gpdword        .L72


---- CUT ----
We went from loading a 64bit word (correct) to loading only a 32bit word
incorrect.  This is for a jump table.



More information about the Gcc-bugs mailing list