diff options
author | Bernd Schmidt <bernd.schmidt@analog.com> | 2007-04-20 00:08:46 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2007-04-20 00:08:46 +0000 |
commit | c1673e1b5a35cd6fe10a088d458ca0133a71eebd (patch) | |
tree | 1a9f92d01863134985e5f2555f1256417e710d36 /gcc | |
parent | 52fdc9b5d9e8e868a066146571d364c470986061 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/reload.c | 7 |
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, |