15 lines
726 B
Diff
15 lines
726 B
Diff
|
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
|