(copy_loop_body...
authorJim Wilson <wilson@gcc.gnu.org>
Thu, 31 Dec 1992 20:47:49 +0000 (12:47 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Thu, 31 Dec 1992 20:47:49 +0000 (12:47 -0800)
(copy_loop_body, JUMP_INSN case): Do map the body of
the loop branch back, then rewrite it to jump past the end of the
unrolled loop.

From-SVN: r3014

gcc/unroll.c

index 459a2b3e6eb18f5e305857dad72eccbfcd6369f1..b58066d20cac6589f045ffc8f1aa629722fc64f7 100644 (file)
@@ -1651,6 +1651,9 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
          break;
          
        case JUMP_INSN:
+         pattern = copy_rtx_and_substitute (PATTERN (insn), map);
+         copy = emit_jump_insn (pattern);
+
          if (JUMP_LABEL (insn) == start_label && insn == copy_end
              && ! last_iteration)
            {
@@ -1659,21 +1662,14 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
                 In this case, we want to change the original fall through
                 case to be a branch past the end of the loop, and the
                 original jump label case to fall_through.  */
-             /* Never map the label in this case.  */
-
-             pattern = copy_rtx (PATTERN (insn));
-             copy = emit_jump_insn (pattern);
 
              if (! invert_exp (pattern, copy)
-                 || ! redirect_exp (&pattern, JUMP_LABEL (insn),
+                 || ! redirect_exp (&pattern,
+                                    map->label_map[CODE_LABEL_NUMBER
+                                                   (JUMP_LABEL (insn))],
                                     exit_label, copy))
                abort ();
            }
-         else
-           {
-             pattern = copy_rtx_and_substitute (PATTERN (insn), map);
-             copy = emit_jump_insn (pattern);
-           }
          
 #ifdef HAVE_cc0
          if (cc0_insn)