File nov354405.diff of Package gcc41

2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>

	* reload.c (combine_reloads): When trying to use a dying register,
	check whether it's uninitialized and don't use if so.

Index: gcc/reload.c
===================================================================
--- gcc/reload.c.orig	2009-11-20 13:41:41.000000000 +0100
+++ gcc/reload.c	2009-11-20 13:42:32.000000000 +0100
@@ -1871,7 +1871,12 @@ combine_reloads (void)
 		    ||  ! (TEST_HARD_REG_BIT
 			   (reg_class_contents[(int) rld[secondary_out].class],
 			    REGNO (XEXP (note, 0)))))))
-	&& ! fixed_regs[REGNO (XEXP (note, 0))])
+	&& ! fixed_regs[REGNO (XEXP (note, 0))]
+	/* Check that we don't use a hardreg for an uninitialized
+	   pseudo.  See also find_dummy_reload().  */
+	&& (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER
+	    || ! bitmap_bit_p (ENTRY_BLOCK_PTR->il.rtl->global_live_at_end,
+			       ORIGINAL_REGNO (XEXP (note, 0)))))
       {
 	rld[output_reload].reg_rtx
 	  = gen_rtx_REG (rld[output_reload].outmode,
openSUSE Build Service is sponsored by