Lines 1520-1526
push_reload (rtx in, rtx out, rtx *inloc
Link Here
|
1520 |
But if there is no spilling in this block, that is OK. |
1520 |
But if there is no spilling in this block, that is OK. |
1521 |
An explicitly used hard reg cannot be a spill reg. */ |
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 |
rtx note; |
1525 |
rtx note; |
1526 |
int regno; |
1526 |
int regno; |
Lines 1534-1539
push_reload (rtx in, rtx out, rtx *inloc
Link Here
|
1534 |
&& REG_P (XEXP (note, 0)) |
1534 |
&& REG_P (XEXP (note, 0)) |
1535 |
&& (regno = REGNO (XEXP (note, 0))) < FIRST_PSEUDO_REGISTER |
1535 |
&& (regno = REGNO (XEXP (note, 0))) < FIRST_PSEUDO_REGISTER |
1536 |
&& reg_mentioned_p (XEXP (note, 0), in) |
1536 |
&& reg_mentioned_p (XEXP (note, 0), in) |
|
|
1537 |
&& (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER |
1538 |
|| ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, |
1539 |
ORIGINAL_REGNO (XEXP (note, 0)))) |
1537 |
&& ! refers_to_regno_for_reload_p (regno, |
1540 |
&& ! refers_to_regno_for_reload_p (regno, |
1538 |
(regno |
1541 |
(regno |
1539 |
+ hard_regno_nregs[regno] |
1542 |
+ hard_regno_nregs[regno] |
Lines 1997-2003
find_dummy_reload (rtx real_in, rtx real
Link Here
|
1997 |
is a subreg, and in that case, out |
2000 |
is a subreg, and in that case, out |
1998 |
has a real mode. */ |
2001 |
has a real mode. */ |
1999 |
(GET_MODE (out) != VOIDmode |
2002 |
(GET_MODE (out) != VOIDmode |
2000 |
? GET_MODE (out) : outmode))) |
2003 |
? GET_MODE (out) : outmode)) |
|
|
2004 |
/* But only do all this if we can be sure, that this input |
2005 |
operand doesn't correspond with an uninitialized pseudoreg. |
2006 |
global can assign some hardreg to it, which is the same as |
2007 |
a different pseudo also currently live (as it can ignore the |
2008 |
conflict). So we never must introduce writes to such hardregs, |
2009 |
as they would clobber the other live pseudo using the same. */ |
2010 |
&& (ORIGINAL_REGNO (in) < FIRST_PSEUDO_REGISTER |
2011 |
|| ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, |
2012 |
ORIGINAL_REGNO (in)))) |
2001 |
{ |
2013 |
{ |
2002 |
unsigned int regno = REGNO (in) + in_offset; |
2014 |
unsigned int regno = REGNO (in) + in_offset; |
2003 |
unsigned int nwords = hard_regno_nregs[regno][inmode]; |
2015 |
unsigned int nwords = hard_regno_nregs[regno][inmode]; |