source:
patches/gcc-4.0.0-reload_check_uninitialized_pseudos_PR20973.patch@
873009c
Last change on this file since 873009c was 617118d, checked in by , 19 years ago | |
---|---|
|
|
File size: 2.3 KB |
-
gcc/gcc/reload.c
Submitted by: Ryan Oliver <ryan.oliver@pha.com.au> Source: http://gcc.gnu.org/ml/gcc-cvs/2005-04/msg01085.html Initial Package Version: 4.0.0 Upstream Status: In gcc4 mainline Description: 2005-04-20 Michael Matz <matz@suse.de> PR20973 * reload.c (push_reload, find_dummy_reload): Check for uninitialized pseudos. RCS file: /cvs/gcc/gcc/gcc/reload.c,v retrieving revision 1.268 retrieving revision 1.269 diff -u -r1.268 -r1.269
1520 1520 But if there is no spilling in this block, that is OK. 1521 1521 An explicitly used hard reg cannot be a spill reg. */ 1522 1522 1523 if (rld[i].reg_rtx == 0 && in != 0 )1523 if (rld[i].reg_rtx == 0 && in != 0 && hard_regs_live_known) 1524 1524 { 1525 1525 rtx note; 1526 1526 int regno; … … 1534 1534 && REG_P (XEXP (note, 0)) 1535 1535 && (regno = REGNO (XEXP (note, 0))) < FIRST_PSEUDO_REGISTER 1536 1536 && reg_mentioned_p (XEXP (note, 0), in) 1537 /* Check that we don't use a hardreg for an uninitialized 1538 pseudo. See also find_dummy_reload(). */ 1539 && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER 1540 || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, 1541 ORIGINAL_REGNO (XEXP (note, 0)))) 1537 1542 && ! refers_to_regno_for_reload_p (regno, 1538 1543 (regno 1539 1544 + hard_regno_nregs[regno] … … 1997 2002 is a subreg, and in that case, out 1998 2003 has a real mode. */ 1999 2004 (GET_MODE (out) != VOIDmode 2000 ? GET_MODE (out) : outmode))) 2005 ? GET_MODE (out) : outmode)) 2006 /* But only do all this if we can be sure, that this input 2007 operand doesn't correspond with an uninitialized pseudoreg. 2008 global can assign some hardreg to it, which is the same as 2009 a different pseudo also currently live (as it can ignore the 2010 conflict). So we never must introduce writes to such hardregs, 2011 as they would clobber the other live pseudo using the same. 2012 See also PR20973. */ 2013 && (ORIGINAL_REGNO (in) < FIRST_PSEUDO_REGISTER 2014 || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, 2015 ORIGINAL_REGNO (in)))) 2001 2016 { 2002 2017 unsigned int regno = REGNO (in) + in_offset; 2003 2018 unsigned int nwords = hard_regno_nregs[regno][inmode];
Note:
See TracBrowser
for help on using the repository browser.