(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)
|
||||
rtx op;
|
||||
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
|
||||
&& (CONSTANT_ADDRESS_P (XEXP (op, 0))
|
||||
|
Loading…
Reference in New Issue
Block a user