From: Richard Henderson Date: Mon, 31 Dec 2001 21:33:19 +0000 (-0800) Subject: cfgrtl.c (delete_insn): Check for not NOTE_INSN_DELETED_LABEL before decrementing... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a124fcda15387389a151fb89bc533965d3c2eb53;p=gcc.git cfgrtl.c (delete_insn): Check for not NOTE_INSN_DELETED_LABEL before decrementing LABEL_NUSES from a... * cfgrtl.c (delete_insn): Check for not NOTE_INSN_DELETED_LABEL before decrementing LABEL_NUSES from a jump table. From-SVN: r48431 --- diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index e7e6e699acc..56b3bf28e6a 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -161,7 +161,15 @@ delete_insn (insn) int i; for (i = 0; i < len; i++) - LABEL_NUSES (XEXP (XVECEXP (pat, diff_vec_p, i), 0))--; + { + rtx label = XEXP (XVECEXP (pat, diff_vec_p, i), 0); + + /* When deleting code in bulk (e.g. removing many unreachable + blocks) we can delete a label that's a target of the vector + before deleting the vector itself. */ + if (GET_CODE (label) != NOTE) + LABEL_NUSES (label)--; + } } return next;