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,