(output_constant_pool): Labels can be deleted by being turned into
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 29 Oct 1992 22:30:41 +0000 (17:30 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 29 Oct 1992 22:30:41 +0000 (17:30 -0500)
NOTEs, not just have INSN_DELETED_P.

From-SVN: r2653

gcc/varasm.c

index e5d757cde4d6529b583e353203c2cf667c244acd..0df6d01a3a0656576db587d3ba5028fdebe24ebb 100644 (file)
@@ -2494,11 +2494,15 @@ output_constant_pool (fnname, fndecl)
       /* See if X is a LABEL_REF (or a CONST referring to a LABEL_REF)
         whose CODE_LABEL has been deleted.  This can occur if a jump table
         is eliminated by optimization.  If so, write a constant of zero
-        instead.  */
-      if ((GET_CODE (x) == LABEL_REF && INSN_DELETED_P (XEXP (x, 0)))
+        instead.  Note that this can also happen by turning the
+        CODE_LABEL into a NOTE.  */
+      if (((GET_CODE (x) == LABEL_REF
+           && (INSN_DELETED_P (XEXP (x, 0))
+               || GET_CODE (XEXP (x, 0)) == NOTE)))
          || (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS
              && GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF
-             && INSN_DELETED_P (XEXP (XEXP (XEXP (x, 0), 0), 0))))
+             && (INSN_DELETED_P (XEXP (XEXP (XEXP (x, 0), 0), 0))
+                 || GET_CODE (XEXP (XEXP (XEXP (x, 0), 0), 0)) == NOTE)))
        x = const0_rtx;
 
       /* First switch to correct section.  */