Accept a unary operator in constrain_operands
[gcc.git] / gcc / recog.c
index 1322f4154bbdfeb084c4f92e09a215c4c36f7ac7..3c7d14c8cea5608231d5079476ca58b510d18cae 100644 (file)
@@ -1,5 +1,5 @@
 /* Subroutines used by or related to instruction recognition.
-   Copyright (C) 1987, 88, 91, 92, 93, 1994 Free Software Foundation, Inc.
+   Copyright (C) 1987, 88, 91-5, 1996 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -1652,6 +1652,11 @@ constrain_operands (insn_code_num, strict)
 
          earlyclobber[opno] = 0;
 
+         /* A unary operator may be accepted by the predicate, but it
+            is irrelevant for matching contraints.  */
+         if (GET_RTX_CLASS (GET_CODE (op)) == '1')
+           op = XEXP (op, 0);
+
          if (GET_CODE (op) == SUBREG)
            {
              if (GET_CODE (SUBREG_REG (op)) == REG