]> gcc.gnu.org Git - gcc.git/commitdiff
reorg.c (fill_simple_delay_slots): Try to fill from the target of an unconditional...
authorJeff Law <law@gcc.gnu.org>
Sun, 31 Dec 1995 23:05:16 +0000 (16:05 -0700)
committerJeff Law <law@gcc.gnu.org>
Sun, 31 Dec 1995 23:05:16 +0000 (16:05 -0700)
        * reorg.c (fill_simple_delay_slots): Try to fill from the
        target of an unconditional branch if necessary.

From-SVN: r10920

gcc/reorg.c

index edd76d5d21be90313eb1e1092e7627acb5a507a6..2bee6487d3ddcf23f4fa2bcdf0c491eae149f40e 100644 (file)
@@ -2804,7 +2804,7 @@ fill_simple_delay_slots (first, non_jumps_p)
   register int i, j;
   int num_unfilled_slots = unfilled_slots_next - unfilled_slots_base;
   struct resources needed, set;
-  register int slots_to_fill, slots_filled;
+  int slots_to_fill, slots_filled;
   rtx delay_list;
 
   for (i = 0; i < num_unfilled_slots; i++)
@@ -3136,6 +3136,19 @@ fill_simple_delay_slots (first, non_jumps_p)
            }
        }
 
+      /* If this is an unconditional jump, then try to get insns from the
+        target of the jump.  */
+      if (GET_CODE (insn) == JUMP_INSN
+         && simplejump_p (insn)
+         && slots_filled != slots_to_fill)
+       delay_list
+         = fill_slots_from_thread (insn, const_true_rtx,
+                                   next_active_insn (JUMP_LABEL (insn)),
+                                   NULL, 1, 1,
+                                   own_thread_p (JUMP_LABEL (insn),
+                                                 JUMP_LABEL (insn), 0),
+                                   0, slots_to_fill, &slots_filled);
+
       if (delay_list)
        unfilled_slots_base[i]
          = emit_delay_sequence (insn, delay_list,
This page took 0.067941 seconds and 5 git commands to generate.