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