[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