diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-17 14:43:33 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-17 14:43:33 -0500 |
commit | 8d36d33b3c4a51c43ae60aed8328f6cbe5f41843 (patch) | |
tree | 0382f5711e84fddf96b87641ddcede0fabafca35 | |
parent | 02df8aba6bde18e7f00a579d304154e28105d912 (diff) | |
download | gcc-8d36d33b3c4a51c43ae60aed8328f6cbe5f41843.zip gcc-8d36d33b3c4a51c43ae60aed8328f6cbe5f41843.tar.gz gcc-8d36d33b3c4a51c43ae60aed8328f6cbe5f41843.tar.bz2 |
(some_operand): New function.
From-SVN: r8481
-rw-r--r-- | gcc/config/alpha/alpha.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 6cf81d1..12608fe 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -280,6 +280,30 @@ reg_or_cint_operand (op, mode) return GET_CODE (op) == CONST_INT || register_operand (op, mode); } +/* Return 1 if OP is something that can be reloaded into a register; + if it is a MEM, it need not be valid. */ + +int +some_operand (op, mode) + register rtx op; + enum machine_mode mode; +{ + if (mode != VOIDmode && GET_MODE (op) != VOIDmode && mode != GET_MODE (op)) + return 0; + + switch (GET_CODE (op)) + { + case REG: case MEM: case CONST_DOUBLE: + case CONST_INT: case LABEL_REF: case SYMBOL_REF: case CONST: + return 1; + + case SUBREG: + return some_operand (SUBREG_REG (op), VOIDmode); + } + + return 0; +} + /* Return 1 if OP is a valid operand for the source of a move insn. */ int |