diff options
author | Richard Stallman <rms@gnu.org> | 1993-05-12 04:55:43 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-05-12 04:55:43 +0000 |
commit | 7a61c8e37c5675a28e35cf3471ae054891d272e4 (patch) | |
tree | a01d60ec61c8038b9af9a712e00fb914ef4a40d7 | |
parent | bd96cb7805f5674f8c582908b43a6a98c2b7f72c (diff) | |
download | gcc-7a61c8e37c5675a28e35cf3471ae054891d272e4.zip gcc-7a61c8e37c5675a28e35cf3471ae054891d272e4.tar.gz gcc-7a61c8e37c5675a28e35cf3471ae054891d272e4.tar.bz2 |
(call_insn_operand): New funcion.
From-SVN: r4430
-rw-r--r-- | gcc/config/i860/i860.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/i860/i860.c b/gcc/config/i860/i860.c index c82c197..0652e08 100644 --- a/gcc/config/i860/i860.c +++ b/gcc/config/i860/i860.c @@ -468,6 +468,26 @@ logic_int (op, mode) { return (GET_CODE (op) == CONST_INT && LOGIC_INT (op)); } + +/* Test for a valid operand for a call instruction. + Don't allow the arg pointer register or virtual regs + since they may change into reg + const, which the patterns + can't handle yet. */ + +int +call_insn_operand (op, mode) + rtx op; + enum machine_mode mode; +{ + if (GET_CODE (op) == MEM + && (CONSTANT_ADDRESS_P (XEXP (op, 0)) + || (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; +} /* Return the best assembler insn template for moving operands[1] into operands[0] as a fullword. */ |