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> 2004-02-11 Ulrich Weigand <uweigand@de.ibm.com>
* tree.h (frame_base_decl): Add GTY marker. * 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, ...@@ -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 /* A CLOBBER of a pseudo-register that is dead serves no purpose. That
is not necessarily true for hard registers. */ is not necessarily true for hard registers until after reload. */
else if (code == CLOBBER && GET_CODE (XEXP (x, 0)) == REG else if (code == CLOBBER)
&& REGNO (XEXP (x, 0)) >= FIRST_PSEUDO_REGISTER {
&& ! REGNO_REG_SET_P (pbi->reg_live, REGNO (XEXP (x, 0)))) if (GET_CODE (XEXP (x, 0)) == REG
return 1; && (REGNO (XEXP (x, 0)) >= FIRST_PSEUDO_REGISTER
|| reload_completed)
/* We do not check other CLOBBER or USE here. An insn consisting of just && ! REGNO_REG_SET_P (pbi->reg_live, REGNO (XEXP (x, 0))))
a CLOBBER or just a USE should not be deleted. */ 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; 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