(call_insn_operand): Require constant address be a general_operand.
(expander_call_insn_operand): New fn (what call_insn_operand was). From-SVN: r4701
This commit is contained in:
parent
0eb60d83ec
commit
4f2c8ebb15
|
@ -524,6 +524,26 @@ int
|
||||||
call_insn_operand (op, mode)
|
call_insn_operand (op, mode)
|
||||||
rtx op;
|
rtx op;
|
||||||
enum machine_mode mode;
|
enum machine_mode mode;
|
||||||
|
{
|
||||||
|
if (GET_CODE (op) == MEM
|
||||||
|
&& ((CONSTANT_ADDRESS_P (XEXP (op, 0))
|
||||||
|
/* This makes a difference for PIC. */
|
||||||
|
&& general_operand (XEXP (op, 0), Pmode))
|
||||||
|
|| (GET_CODE (XEXP (op, 0)) == REG
|
||||||
|
&& XEXP (op, 0) != arg_pointer_rtx
|
||||||
|
&& !(REGNO (XEXP (op, 0)) >= FIRST_PSEUDO_REGISTER
|
||||||
|
&& REGNO (XEXP (op, 0)) <= LAST_VIRTUAL_REGISTER))))
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Like call_insn_operand but allow (mem (symbol_ref ...))
|
||||||
|
even if pic. */
|
||||||
|
|
||||||
|
int
|
||||||
|
expander_call_insn_operand (op, mode)
|
||||||
|
rtx op;
|
||||||
|
enum machine_mode mode;
|
||||||
{
|
{
|
||||||
if (GET_CODE (op) == MEM
|
if (GET_CODE (op) == MEM
|
||||||
&& (CONSTANT_ADDRESS_P (XEXP (op, 0))
|
&& (CONSTANT_ADDRESS_P (XEXP (op, 0))
|
||||||
|
|
Loading…
Reference in New Issue