*** empty log message ***
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 28 Mar 1992 12:53:14 +0000 (07:53 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 28 Mar 1992 12:53:14 +0000 (07:53 -0500)
From-SVN: r612

gcc/config/rs6000/rs6000.c

index cac077382a70c9c88ca0aa2ac4998fc8d07f36fa..5a74a73d0e91db84fb48de6f2d7dc89ea0066607 100644 (file)
@@ -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);