diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1994-01-24 16:19:48 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1994-01-24 16:19:48 -0800 |
commit | 648a09eed9f2b429e36353da9f603e79caa6c18e (patch) | |
tree | fcc71d7992c3fc7785843860802b39d47c341db8 /gcc | |
parent | 453dfc7887f0558aa1c79c91d412a4d35271dece (diff) | |
download | gcc-648a09eed9f2b429e36353da9f603e79caa6c18e.zip gcc-648a09eed9f2b429e36353da9f603e79caa6c18e.tar.gz gcc-648a09eed9f2b429e36353da9f603e79caa6c18e.tar.bz2 |
(copy_loop_body): When delete simplified condjump,
protect the label, so that it doesn't get deleted also.
From-SVN: r6428
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/unroll.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c index eac1e95..20ab17b 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -1830,7 +1830,14 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration, /* If this is now a no-op, delete it. */ if (map->last_pc_value == pc_rtx) { + /* Don't let delete_insn delete the label referenced here, + because we might possibly need it later for some other + instruction in the loop. */ + if (JUMP_LABEL (copy)) + LABEL_NUSES (JUMP_LABEL (copy))++; delete_insn (copy); + if (JUMP_LABEL (copy)) + LABEL_NUSES (JUMP_LABEL (copy))--; copy = 0; } else |