From: J"orn Rennecke Date: Wed, 5 May 1999 15:47:48 +0000 (+0000) Subject: * unroll.c (copy_loop_body): Don't copy VTOP notes from copy_notes_from. X-Git-Tag: prereleases/gcc-2.95-test~619 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36e9ee91ef97d6168a716a11394964b9564c6b2d;p=thirdparty%2Fgcc.git * unroll.c (copy_loop_body): Don't copy VTOP notes from copy_notes_from. From-SVN: r26786 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a56814c51ad2..e61f1541b667 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Wed May 5 23:44:15 1999 J"orn Rennecke + + * unroll.c (copy_loop_body): Don't copy VTOP notes from copy_notes_from. + Wed May 5 16:26:13 1999 Vladimir Makarov * function.c (purge_addressof_replacements): Rename into diff --git a/gcc/unroll.c b/gcc/unroll.c index f1080aae701f..7e584c961d06 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -2193,9 +2193,17 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration, { for (insn = copy_notes_from; insn != loop_end; insn = NEXT_INSN (insn)) { + /* VTOP notes are valid only before the loop exit test. + If placed anywhere else, loop may generate bad code. + There is no need to test for NOTE_INSN_LOOP_CONT notes + here, since COPY_NOTES_FROM will be at most one or two (for cc0) + instructions before the last insn in the loop, and if the + end test is that short, there will be a VTOP note between + the CONT note and the test. */ if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) != NOTE_INSN_DELETED - && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK) + && NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK + && NOTE_LINE_NUMBER (insn) != NOTE_INSN_LOOP_VTOP) emit_note (NOTE_SOURCE_FILE (insn), NOTE_LINE_NUMBER (insn)); } }