flow.c (insn_dead_p): A clobber of a dead hard register is a dead insn after reload.
* flow.c (insn_dead_p): A clobber of a dead hard register is a dead insn after reload. From-SVN: r77674
This commit is contained in:
parent
05ac140eaf
commit
a6abdce327
@ -1,3 +1,8 @@
|
||||
2004-02-11 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* flow.c (insn_dead_p): A clobber of a dead hard register is a
|
||||
dead insn after reload.
|
||||
|
||||
2004-02-11 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* tree.h (frame_base_decl): Add GTY marker.
|
||||
|
22
gcc/flow.c
22
gcc/flow.c
@ -2267,14 +2267,22 @@ insn_dead_p (struct propagate_block_info *pbi, rtx x, int call_ok,
|
||||
}
|
||||
|
||||
/* A CLOBBER of a pseudo-register that is dead serves no purpose. That
|
||||
is not necessarily true for hard registers. */
|
||||
else if (code == CLOBBER && GET_CODE (XEXP (x, 0)) == REG
|
||||
&& REGNO (XEXP (x, 0)) >= FIRST_PSEUDO_REGISTER
|
||||
&& ! REGNO_REG_SET_P (pbi->reg_live, REGNO (XEXP (x, 0))))
|
||||
return 1;
|
||||
is not necessarily true for hard registers until after reload. */
|
||||
else if (code == CLOBBER)
|
||||
{
|
||||
if (GET_CODE (XEXP (x, 0)) == REG
|
||||
&& (REGNO (XEXP (x, 0)) >= FIRST_PSEUDO_REGISTER
|
||||
|| reload_completed)
|
||||
&& ! REGNO_REG_SET_P (pbi->reg_live, REGNO (XEXP (x, 0))))
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ??? A base USE is a historical relic. It ought not be needed anymore.
|
||||
Instances where it is still used are either (1) temporary and the USE
|
||||
escaped the pass, (2) cruft and the USE need not be emitted anymore,
|
||||
or (3) hiding bugs elsewhere that are not properly representing data
|
||||
flow. */
|
||||
|
||||
/* We do not check other CLOBBER or USE here. An insn consisting of just
|
||||
a CLOBBER or just a USE should not be deleted. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user