File gcc48-bnc976627.patch of Package gcc48.2537

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
openSUSE Build Service is sponsored by