cfgrtl.c (delete_insn): Decrease LABEL_NUSES for all REG_LABEL notes.
authorJosef Zlomek <zlomekj@suse.cz>
Fri, 31 Oct 2003 14:19:03 +0000 (15:19 +0100)
committerJosef Zlomek <zlomek@gcc.gnu.org>
Fri, 31 Oct 2003 14:19:03 +0000 (14:19 +0000)
PR/10239
* cfgrtl.c (delete_insn): Decrease LABEL_NUSES for all REG_LABEL notes.

From-SVN: r73145

gcc/ChangeLog
gcc/cfgrtl.c

index 1613d2f35ecda1c49441076ecf4971cb973892e0..24954ff60e8190e0f175fb3db550ea01e340f058 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-31  Josef Zlomek  <zlomekj@suse.cz>
+
+       PR/10239
+       * cfgrtl.c (delete_insn): Decrease LABEL_NUSES for all REG_LABEL notes.
+
 2003-10-31  Josef Zlomek  <zlomekj@suse.cz>
 
        PR/11640
index 7354c73c7fb31790034891ad94d1c320a453ce98..5769ef366b561e79ab80731aca769e183b02de50 100644 (file)
@@ -156,9 +156,15 @@ delete_insn (rtx insn)
     LABEL_NUSES (JUMP_LABEL (insn))--;
 
   /* Also if deleting an insn that references a label.  */
-  else if ((note = find_reg_note (insn, REG_LABEL, NULL_RTX)) != NULL_RTX
-          && GET_CODE (XEXP (note, 0)) == CODE_LABEL)
-    LABEL_NUSES (XEXP (note, 0))--;
+  else
+    {
+      while ((note = find_reg_note (insn, REG_LABEL, NULL_RTX)) != NULL_RTX
+            && GET_CODE (XEXP (note, 0)) == CODE_LABEL)
+       {
+         LABEL_NUSES (XEXP (note, 0))--;
+         remove_note (insn, note);
+       }
+    }
 
   if (GET_CODE (insn) == JUMP_INSN
       && (GET_CODE (PATTERN (insn)) == ADDR_VEC