aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernd.schmidt@analog.com>2007-04-20 00:08:46 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2007-04-20 00:08:46 +0000
commitc1673e1b5a35cd6fe10a088d458ca0133a71eebd (patch)
tree1a9f92d01863134985e5f2555f1256417e710d36 /gcc
parent52fdc9b5d9e8e868a066146571d364c470986061 (diff)
downloadgcc-c1673e1b5a35cd6fe10a088d458ca0133a71eebd.zip
gcc-c1673e1b5a35cd6fe10a088d458ca0133a71eebd.tar.gz
gcc-c1673e1b5a35cd6fe10a088d458ca0133a71eebd.tar.bz2
reload.c (combine_reloads): When trying to use a dying register...
* reload.c (combine_reloads): When trying to use a dying register, check whether it's uninitialized and don't use if so. From-SVN: r123986
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/reload.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e62e9a9..396579e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-19 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.
+
2007-04-19 Brooks Moses <brooks.moses@codesourcery.com>
* fold-const.c: Remove prototypes for native_encode_expr and
diff --git a/gcc/reload.c b/gcc/reload.c
index aa22671c..b0374d8 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -1853,7 +1853,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,