OSDN Git Service

(output_constant_pool): Labels can be deleted by being turned into
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 Oct 1992 22:30:41 +0000 (22:30 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 Oct 1992 22:30:41 +0000 (22:30 +0000)
NOTEs, not just have INSN_DELETED_P.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@2653 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/varasm.c

index e5d757c..0df6d01 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.  */