aboutsummaryrefslogtreecommitdiff
path: root/gcc/unroll.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-02-25 15:45:42 -0800
committerRichard Henderson <rth@gcc.gnu.org>1999-02-25 15:45:42 -0800
commite881bb1b1b60bca2b51088b8c6946feb96b0047f (patch)
tree5f11cf1c6b61122849435f2ab564e45e67595e64 /gcc/unroll.c
parent001e880a269a8b586ee074918b6707edb190ea7c (diff)
downloadgcc-e881bb1b1b60bca2b51088b8c6946feb96b0047f.zip
gcc-e881bb1b1b60bca2b51088b8c6946feb96b0047f.tar.gz
gcc-e881bb1b1b60bca2b51088b8c6946feb96b0047f.tar.bz2
Flow rewrite to use basic block structures and edge lists.
From-SVN: r25450
Diffstat (limited to 'gcc/unroll.c')
-rw-r--r--gcc/unroll.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c
index 7953416..28c3e7b 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -2129,8 +2129,12 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
case NOTE:
/* VTOP notes are valid only before the loop exit test. If placed
anywhere else, loop may generate bad code. */
+ /* BASIC_BLOCK notes exist to stabilize basic block structures with
+ the associated rtl. We do not want to share the structure in
+ this new block. */
if (NOTE_LINE_NUMBER (insn) != NOTE_INSN_DELETED
+ && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK
&& (NOTE_LINE_NUMBER (insn) != NOTE_INSN_LOOP_VTOP
|| (last_iteration && unroll_type != UNROLL_COMPLETELY)))
copy = emit_note (NOTE_SOURCE_FILE (insn),
@@ -2175,7 +2179,8 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
for (insn = copy_notes_from; insn != loop_end; insn = NEXT_INSN (insn))
{
if (GET_CODE (insn) == NOTE
- && NOTE_LINE_NUMBER (insn) != NOTE_INSN_DELETED)
+ && NOTE_LINE_NUMBER (insn) != NOTE_INSN_DELETED
+ && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK)
emit_note (NOTE_SOURCE_FILE (insn), NOTE_LINE_NUMBER (insn));
}
}