aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-03-28 07:53:14 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1992-03-28 07:53:14 -0500
commit88fe15a1861bd630c70d7a7027d7b3523194d08a (patch)
tree778c2187866ea88aa3148049b93db815c7dba5e8
parent7dcd3836a31b1642a57122f63c0828b06a190f5f (diff)
downloadgcc-88fe15a1861bd630c70d7a7027d7b3523194d08a.zip
gcc-88fe15a1861bd630c70d7a7027d7b3523194d08a.tar.gz
gcc-88fe15a1861bd630c70d7a7027d7b3523194d08a.tar.bz2
*** empty log message ***
From-SVN: r612
-rw-r--r--gcc/config/rs6000/rs6000.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index cac0773..5a74a73 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -349,16 +349,17 @@ input_operand (op, mode)
|| GET_MODE_SIZE (mode) > UNITS_PER_WORD)
return gen_reg_operand (op, mode);
- /* For SImode, we can also load from a special register, so any register
- is valid. */
- if (mode == SImode && register_operand (op, mode))
+ /* The only cases left are integral modes one word or smaller (we
+ do not get called for MODE_CC values). These can be in any
+ register. */
+ if (register_operand (op, mode))
+ return;
+
+ /* For HImode and QImode, any constant is valid. */
+ if ((mode == HImode || mode == QImode)
+ && GET_CODE (op) == CONST_INT)
return 1;
- /* For HImode and QImode, any constant is valid along with any
- non-special register. */
- if (mode == HImode || mode == QImode)
- return register_operand (op, mode) || GET_CODE (op) == CONST_INT;
-
/* Otherwise, we will be doing this SET with an add, so anything valid
for an add will be valid. */
return add_operand (op, mode);