]> gcc.gnu.org Git - gcc.git/commitdiff
Fix -g -O3 -funroll-all-loops irix6 bootstrap failure reported by Kaveh Ghazi.
authorJim Wilson <wilson@cygnus.com>
Fri, 9 Jul 1999 19:12:30 +0000 (19:12 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 9 Jul 1999 19:12:30 +0000 (12:12 -0700)
* unroll.c (unroll_loops): Don't delete named CODE_LABELs.

From-SVN: r28048

gcc/ChangeLog
gcc/unroll.c

index d54b8f61c77a2881271e1b6879e09848524bd07d..d2b35831e2771eed7fdd6bebe99758e7d024492b 100644 (file)
@@ -1,3 +1,7 @@
+Fri Jul  9 19:08:55 1999  Jim Wilson  <wilson@cygnus.com>
+
+       * unroll.c (unroll_loops): Don't delete named CODE_LABELs.
+
 Fri Jul  9 18:54:18 1999  Felix Lee  <flee@cygnus.com>
 
        * config/i960/i960.c (ret_label): Change asm label from "LR:" to
index 9ac883a1d49e4da434e44347a15302bab5478cfe..d6dbcf0fbc1d151382bbb30773d1bb03d661cec8 100644 (file)
@@ -1262,11 +1262,16 @@ unroll_loop (loop_end, insn_count, loop_start, end_insert_before,
   insn = NEXT_INSN (copy_start);
   while (insn != safety_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.  */
+      /* ??? Don't delete named code labels.  They will be deleted when the
+        jump that references them is deleted.  Otherwise, we end up deleting
+        them twice, which causes them to completely disappear instead of turn
+        into NOTE_INSN_DELETED_LABEL notes.  This in turn causes aborts in
+        dwarfout.c/dwarf2out.c.  We could perhaps fix the dwarf*out.c files
+        to handle deleted labels instead.  Or perhaps fix DECL_RTL of the
+        associated LABEL_DECL to point to one of the new label instances.  */
+      /* ??? Likewise, we can't delete a NOTE_INSN_DELETED_LABEL note.  */
       if (insn != start_label
+         && ! (GET_CODE (insn) == CODE_LABEL && LABEL_NAME (insn))
          && ! (GET_CODE (insn) == NOTE
                && NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL))
        insn = delete_insn (insn);
This page took 0.065176 seconds and 5 git commands to generate.