From: Richard Kenner Date: Sat, 28 Mar 1992 12:53:14 +0000 (-0500) Subject: *** empty log message *** X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=88fe15a1861bd630c70d7a7027d7b3523194d08a;p=gcc.git *** empty log message *** From-SVN: r612 --- diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index cac077382a7..5a74a73d0e9 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);