From 483404b6dc558ee5c38657e06c66ba059d7b25aa Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Thu, 31 Dec 1992 12:47:49 -0800 Subject: [PATCH] (copy_loop_body... (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 | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/gcc/unroll.c b/gcc/unroll.c index 459a2b3e6eb..b58066d20ca 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -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) -- 2.30.2