aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1994-11-30 18:43:50 -0700
committerJeff Law <law@gcc.gnu.org>1994-11-30 18:43:50 -0700
commit0b84a0d328490126cc506c0cca4dfdc797ca9b3c (patch)
tree2940215860d8db6b19d171a952a5eac0613283f6 /gcc
parentca89d290d8ccb0fd7b5d9e41f69ed9870a833974 (diff)
downloadgcc-0b84a0d328490126cc506c0cca4dfdc797ca9b3c.zip
gcc-0b84a0d328490126cc506c0cca4dfdc797ca9b3c.tar.gz
gcc-0b84a0d328490126cc506c0cca4dfdc797ca9b3c.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reorg.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index cd7d652..eef6f06 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;