(output_constant_pool): Labels can be deleted by being turned into
NOTEs, not just have INSN_DELETED_P. From-SVN: r2653
This commit is contained in:
parent
6ba17bb091
commit
7b2b3f1f70
10
gcc/varasm.c
10
gcc/varasm.c
@ -2494,11 +2494,15 @@ output_constant_pool (fnname, fndecl)
|
|||||||
/* See if X is a LABEL_REF (or a CONST referring to a LABEL_REF)
|
/* 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
|
whose CODE_LABEL has been deleted. This can occur if a jump table
|
||||||
is eliminated by optimization. If so, write a constant of zero
|
is eliminated by optimization. If so, write a constant of zero
|
||||||
instead. */
|
instead. Note that this can also happen by turning the
|
||||||
if ((GET_CODE (x) == LABEL_REF && INSN_DELETED_P (XEXP (x, 0)))
|
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 (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS
|
||||||
&& GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF
|
&& 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;
|
x = const0_rtx;
|
||||||
|
|
||||||
/* First switch to correct section. */
|
/* First switch to correct section. */
|
||||||
|
Loading…
Reference in New Issue
Block a user