diff options
Diffstat (limited to 'gcc/reload.c')
-rw-r--r-- | gcc/reload.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 16a7e474e66..7df7f22123a 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1,7 +1,7 @@ /* Search an insn for pseudo regs that must be in hard regs and are not. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, - Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. This file is part of GCC. @@ -112,6 +112,7 @@ a register with any other reload. */ #include "toplev.h" #include "params.h" #include "target.h" +#include "df.h" /* True if X is a constant that can be forced into the constant pool. */ #define CONST_POOL_OK_P(X) \ @@ -1521,7 +1522,7 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc, /* 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, + || ! bitmap_bit_p (DF_RA_LIVE_OUT (ENTRY_BLOCK_PTR), ORIGINAL_REGNO (XEXP (note, 0)))) && ! refers_to_regno_for_reload_p (regno, end_hard_regno (rel_mode, @@ -1847,7 +1848,7 @@ combine_reloads (void) /* 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, + || ! bitmap_bit_p (DF_LR_OUT (ENTRY_BLOCK_PTR), ORIGINAL_REGNO (XEXP (note, 0))))) { rld[output_reload].reg_rtx @@ -2000,7 +2001,7 @@ find_dummy_reload (rtx real_in, rtx real_out, rtx *inloc, rtx *outloc, as they would clobber the other live pseudo using the same. See also PR20973. */ && (ORIGINAL_REGNO (in) < FIRST_PSEUDO_REGISTER - || ! bitmap_bit_p (ENTRY_BLOCK_PTR->il.rtl->global_live_at_end, + || ! bitmap_bit_p (DF_RA_LIVE_OUT (ENTRY_BLOCK_PTR), ORIGINAL_REGNO (in)))) { unsigned int regno = REGNO (in) + in_offset; |