From 892a4e60a78c66a84be2a9bf7da533dfbd41673f Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 14 Dec 2001 18:28:33 -0800 Subject: [PATCH] ia64.c (spill_restore_mem): Mark iterator initialization as possibly dead. * config/ia64/ia64.c (spill_restore_mem): Mark iterator initialization as possibly dead. From-SVN: r48030 --- gcc/ChangeLog | 5 +++++ gcc/config/ia64/ia64.c | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2e4f175d1db..642395bc6ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-12-14 Richard Henderson + + * config/ia64/ia64.c (spill_restore_mem): Mark iterator + initialization as possibly dead. + 2001-12-14 Richard Henderson * regrename.c (mode_change_ok): New. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index b70f038390a..b7d3919bd4b 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -1771,7 +1771,7 @@ spill_restore_mem (reg, cfa_off) } else { - rtx seq; + rtx seq, insn; if (disp == 0) seq = gen_movdi (spill_fill_data.iter_reg[iter], @@ -1797,17 +1797,26 @@ spill_restore_mem (reg, cfa_off) /* Careful for being the first insn in a sequence. */ if (spill_fill_data.init_after) - spill_fill_data.init_after - = emit_insn_after (seq, spill_fill_data.init_after); + insn = emit_insn_after (seq, spill_fill_data.init_after); else { rtx first = get_insns (); if (first) - spill_fill_data.init_after - = emit_insn_before (seq, first); + insn = emit_insn_before (seq, first); else - spill_fill_data.init_after = emit_insn (seq); + insn = emit_insn (seq); } + spill_fill_data.init_after = insn; + + /* If DISP is 0, we may or may not have a further adjustment + afterward. If we do, then the load/store insn may be modified + to be a post-modify. If we don't, then this copy may be + eliminated by copyprop_hardreg_forward, which makes this + insn garbage, which runs afoul of the sanity check in + propagate_one_insn. So mark this insn as legal to delete. */ + if (disp == 0) + REG_NOTES(insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, const0_rtx, + REG_NOTES (insn)); } mem = gen_rtx_MEM (GET_MODE (reg), spill_fill_data.iter_reg[iter]); -- 2.30.2