(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:
Richard Stallman 1993-06-19 22:33:36 +00:00
parent 0eb60d83ec
commit 4f2c8ebb15
1 changed files with 20 additions and 0 deletions

View File

@ -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))