(some_operand): New function.
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 17 Nov 1994 19:43:33 +0000 (14:43 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 17 Nov 1994 19:43:33 +0000 (14:43 -0500)
From-SVN: r8481

gcc/config/alpha/alpha.c

index 6cf81d1ce7fe30ce23175a0b73024d5cf7671e2f..12608fe1b53178e584df1460217d065c8f5c42bd 100644 (file)
@@ -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