* flow.c (propagate_one_insn): Mark sets even when the insn is dead.

From-SVN: r33564
This commit is contained in:
Richard Henderson 2000-05-01 00:21:29 -07:00 committed by Richard Henderson
parent c4686982aa
commit 5e9e738cd2
2 changed files with 11 additions and 5 deletions

View File

@ -1,5 +1,7 @@
2000-04-30 Richard Henderson <rth@cygnus.com>
* flow.c (propagate_one_insn): Mark sets even when the insn is dead.
* ifcvt.c (noce_process_if_block): Fail the conversion if X is
referenced bewteen the condition and the jump. Don't delete
anything but the jump.

View File

@ -3364,6 +3364,15 @@ propagate_one_insn (pbi, insn)
delete it. */
if ((flags & PROP_KILL_DEAD_CODE) && insn_is_dead)
{
/* Record sets. Do this even for dead instructions, since they
would have killed the values if they hadn't been deleted. */
mark_set_regs (pbi, PATTERN (insn), insn);
/* CC0 is now known to be dead. Either this insn used it,
in which case it doesn't anymore, or clobbered it,
so the next insn can't use it. */
pbi->cc0_live = 0;
if (libcall_is_dead)
{
prev = propagate_block_delete_libcall (pbi->bb, insn, note);
@ -3372,11 +3381,6 @@ propagate_one_insn (pbi, insn)
else
propagate_block_delete_insn (pbi->bb, insn);
/* CC0 is now known to be dead. Either this insn used it,
in which case it doesn't anymore, or clobbered it,
so the next insn can't use it. */
pbi->cc0_live = 0;
return prev;
}