This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix PR middle-end/6096, middle-end/6098, middle-end/6099
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sat, 30 Mar 2002 21:10:05 +0100
- Subject: [PATCH] Fix PR middle-end/6096, middle-end/6098, middle-end/6099
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
REG_LABEL may point to NOTE_INSN_DELETED_LABEL, in which
case doing anything with LABEL_NUSES is not appropriate.
2002-03-30 Jakub Jelinek <jakub@redhat.com>
PR middle-end/6096, middle-end/6098, middle-end/6099
* reorg.c (emit_delay_sequence): Only increment LABEL_NUSES for
CODE_LABELs.
(fill_slots_from_thread): Likewise.
--- gcc/reorg.c.jj Mon Jan 7 14:57:23 2002
+++ gcc/reorg.c Sat Mar 30 21:11:10 2002
@@ -511,7 +511,8 @@ emit_delay_sequence (insn, list, length)
case REG_LABEL:
/* Keep the label reference count up to date. */
- LABEL_NUSES (XEXP (note, 0)) ++;
+ if (GET_CODE (XEXP (note, 0)) == CODE_LABEL)
+ LABEL_NUSES (XEXP (note, 0)) ++;
break;
default:
@@ -2732,12 +2733,13 @@ fill_slots_from_thread (insn, condition,
temporarily increment the use count on any referenced
label lest it be deleted by delete_related_insns. */
note = find_reg_note (trial, REG_LABEL, 0);
- if (note)
+ /* REG_LABEL could be NOTE_INSN_DELETED_LABEL too. */
+ if (note && GET_CODE (XEXP (note, 0)) == CODE_LABEL)
LABEL_NUSES (XEXP (note, 0))++;
delete_related_insns (trial);
- if (note)
+ if (note && GET_CODE (XEXP (note, 0)) == CODE_LABEL)
LABEL_NUSES (XEXP (note, 0))--;
}
else
Jakub