ppc64 SFmode constants in the TOC occupy the first word of a dword.
For little-endian, we don't need to shift left. Bootstrapped etc. and
committed as obvious revision 199646.
* config/rs6000/rs6000.c (output_toc): Correct little-endian float
constant output.
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c (revision 199644)
+++ gcc/config/rs6000/rs6000.c (working copy)
@@ -22574,7 +22574,10 @@ output_toc (FILE *file, rtx x, int labelno, enum m
fputs (DOUBLE_INT_ASM_OP, file);
else
fprintf (file, "\t.tc FS_%lx[TC],", l & 0xffffffff);
- fprintf (file, "0x%lx00000000\n", l & 0xffffffff);
+ if (WORDS_BIG_ENDIAN)
+ fprintf (file, "0x%lx00000000\n", l & 0xffffffff);
+ else
+ fprintf (file, "0x%lx\n", l & 0xffffffff);
return;
}
else
--
Alan Modra
Australia Development Lab, IBM