Commit a6abdce3 by Richard Henderson Committed by Ian Lance Taylor

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
parent 05ac140e
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.
......
......@@ -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;
/* We do not check other CLOBBER or USE here. An insn consisting of just
a CLOBBER or just a USE should not be deleted. */
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. */
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment