diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-03-28 07:53:14 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-03-28 07:53:14 -0500 |
commit | 88fe15a1861bd630c70d7a7027d7b3523194d08a (patch) | |
tree | 778c2187866ea88aa3148049b93db815c7dba5e8 | |
parent | 7dcd3836a31b1642a57122f63c0828b06a190f5f (diff) | |
download | gcc-88fe15a1861bd630c70d7a7027d7b3523194d08a.zip gcc-88fe15a1861bd630c70d7a7027d7b3523194d08a.tar.gz gcc-88fe15a1861bd630c70d7a7027d7b3523194d08a.tar.bz2 |
*** empty log message ***
From-SVN: r612
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 17 |
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); |