diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-13 14:50:39 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-13 14:50:39 -0400 |
commit | fdccb6df822abcb20bc2274de91d03fd97fa18ae (patch) | |
tree | dab73222a58bf3a5f665ef8fa232ee6c13322657 /gcc/loop.c | |
parent | d6b3cb10716b596b8133d286dbf583818c25ee9f (diff) | |
download | gcc-fdccb6df822abcb20bc2274de91d03fd97fa18ae.zip gcc-fdccb6df822abcb20bc2274de91d03fd97fa18ae.tar.gz gcc-fdccb6df822abcb20bc2274de91d03fd97fa18ae.tar.bz2 |
(find_and_verify_loops): Set dest_loop only if JUMP_LABEL (insn) is
non-zero.
From-SVN: r10210
Diffstat (limited to 'gcc/loop.c')
-rw-r--r-- | gcc/loop.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -2338,8 +2338,8 @@ find_and_verify_loops (f) { rtx p; rtx our_next = next_real_insn (insn); - int dest_loop = uid_loop_num[INSN_UID (JUMP_LABEL (insn))]; - int outer_loop; + int dest_loop; + int outer_loop = -1; /* Go backwards until we reach the start of the loop, a label, or a JUMP_INSN. */ @@ -2354,15 +2354,17 @@ find_and_verify_loops (f) /* Check for the case where we have a jump to an inner nested loop, and do not perform the optimization in that case. */ - if (dest_loop != -1) + if (JUMP_LABEL (insn)) { - for (outer_loop = dest_loop; outer_loop != -1; - outer_loop = loop_outer_loop[outer_loop]) - if (outer_loop == this_loop_num) - break; + dest_loop = uid_loop_num[INSN_UID (JUMP_LABEL (insn))]; + if (dest_loop != -1) + { + for (outer_loop = dest_loop; outer_loop != -1; + outer_loop = loop_outer_loop[outer_loop]) + if (outer_loop == this_loop_num) + break; + } } - else - outer_loop = -1; /* If we stopped on a JUMP_INSN to the next insn after INSN, we have a block of code to try to move. |