Files
gcc48/gcc48-bnc976627.patch

15 lines
726 B
Diff
Raw Permalink Normal View History

Fix for bnc 976627. Under high reg pressure constants need to be reloaded
from the TOC, and when it was floating point constants that reload
from the TOC wasn't accepted.
--- gcc/config/rs6000/rs6000.c.mm 2016-04-25 20:51:23.033619239 +0200
+++ gcc/config/rs6000/rs6000.c 2016-04-25 20:51:47.413926002 +0200
@@ -17094,6 +17094,7 @@ rs6000_secondary_reload_inner (rtx reg,
case FLOAT_REGS:
if (legitimate_indirect_address_p (addr, false) /* reg */
|| legitimate_indexed_address_p (addr, false) /* reg+reg */
+ || legitimate_constant_pool_address_p (addr, mode, false)
|| ((GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8)
&& and_op2 == NULL_RTX
&& scratch_or_premodify == scratch