File gcc48-bnc976627.patch of Package cross-aarch64-gcc48-icecream-backend
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