From 0b84a0d328490126cc506c0cca4dfdc797ca9b3c Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 30 Nov 1994 18:43:50 -0700 Subject: [PATCH] reorg.c (fill_slots_from_thread): Create a USE insn for any redundant insn we pretend to fill a delay slot with. * reorg.c (fill_slots_from_thread): Create a USE insn for any redundant insn we pretend to fill a delay slot with. Continue searching for a suitable delay slot insn at the new USE insn. From-SVN: r8595 --- gcc/reorg.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/reorg.c b/gcc/reorg.c index cd7d6528f24..eef6f06c047 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3329,7 +3329,20 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely, else { update_reg_unused_notes (prior_insn, trial); - new_thread = next_active_insn (trial); + + /* Even if we don't own the the thread, we still need + call update_block to get our special USE insn inserted. + + Furthermore, new_thread should point to the USE insn + so the USE insn will be after any label created before + new_thread later in reorg. Also note next_active_insn + skips the USE insn. + + If we do not do this mark_target_live_regs may fail + to realize any insn set by the redundant insn was + live at new_thread. */ + update_block (trial, next_active_insn (thread)); + new_thread = PREV_INSN (next_active_insn (trial)); } continue; -- 2.30.2