]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
unroll.c (unroll_loop): Don't delete NOTE_INSN_DELETED_LABEL notes.
authorJim Wilson <wilson@cygnus.com>
Wed, 7 Jul 1999 00:40:46 +0000 (18:40 -0600)
committerJeff Law <law@gcc.gnu.org>
Wed, 7 Jul 1999 00:40:46 +0000 (18:40 -0600)
8
        * unroll.c (unroll_loop): Don't delete NOTE_INSN_DELETED_LABEL notes.

From-SVN: r27982

gcc/unroll.c

index 7e584c961d065cee468532513d7bd1f2e0056848..9ac883a1d49e4da434e44347a15302bab5478cfe 100644 (file)
@@ -1262,7 +1262,13 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before,
   insn = NEXT_INSN (copy_start);
   while (insn != safety_label)
     {
-      if (insn != start_label)
+      /* ??? We can't delete a NOTE_INSN_DELETED_LABEL unless we fix the
+        DECL_RTL field of the associated LABEL_DECL to point to (one of)
+        the new copies of the label.  Otherwise, we hit an abort in
+        dwarfout.c/dwarf2out.c.  */
+      if (insn != start_label
+         && ! (GET_CODE (insn) == NOTE
+               && NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL))
        insn = delete_insn (insn);
       else
        insn = NEXT_INSN (insn);