Commit c40cb38d by Richard Earnshaw Committed by Richard Earnshaw

re PR target/23783 (gcc.c-torture/compile/calls.c triggers an ICE)

	PR target/23783
	* arm.md (call): If the address isn't a SYMBOL_REF or a register,
	then force it into a register.
	(call_value): Likewise.

From-SVN: r105032
parent 5872662b
2005-10-06 Richard Earnshaw <richard.earnshaw@arm.com>
PR target/23783
* arm.md (call): If the address isn't a SYMBOL_REF or a register,
then force it into a register.
(call_value): Likewise.
2005-10-06 Richard Henderson <rth@redhat.com>
PR 24049
......
......@@ -7455,8 +7455,10 @@
invoked it. */
callee = XEXP (operands[0], 0);
if (GET_CODE (callee) != REG
&& arm_is_longcall_p (operands[0], INTVAL (operands[2]), 0))
if ((GET_CODE (callee) == SYMBOL_REF
&& arm_is_longcall_p (operands[0], INTVAL (operands[2]), 0))
|| (GET_CODE (callee) != SYMBOL_REF
&& GET_CODE (callee) != REG))
XEXP (operands[0], 0) = force_reg (Pmode, callee);
}"
)
......@@ -7545,8 +7547,10 @@
operands[3] = const0_rtx;
/* See the comment in define_expand \"call\". */
if (GET_CODE (callee) != REG
&& arm_is_longcall_p (operands[1], INTVAL (operands[3]), 0))
if ((GET_CODE (callee) == SYMBOL_REF
&& arm_is_longcall_p (operands[1], INTVAL (operands[3]), 0))
|| (GET_CODE (callee) != SYMBOL_REF
&& GET_CODE (callee) != REG))
XEXP (operands[1], 0) = force_reg (Pmode, callee);
}"
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment