reorg.c (fill_slots_from_thread): Create a USE insn for any redundant insn we pretend...
authorJeff Law <law@gcc.gnu.org>
Thu, 1 Dec 1994 01:43:50 +0000 (18:43 -0700)
committerJeff Law <law@gcc.gnu.org>
Thu, 1 Dec 1994 01:43:50 +0000 (18:43 -0700)
* 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

index cd7d6528f24bfd1f186a3baa3f0b1041935824a0..eef6f06c0474a176608a2d33f593f151490dfe8c 100644 (file)
@@ -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;