diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f79e6ab20cdf050f8655cffa55bd29176cf7401b..95cc4a3588d406395aa23f7ce83788c4e8b0c655 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-06-11  Richard Sandiford  <rdsandiford@googlemail.com>
+
+	* recog.h (operand_alternative): Remove offmem_ok, nonffmem_ok,
+	decmem_ok and incmem_ok.  Reformat other bitfields for consistency.
+	* recog.c (preprocess_constraints): Update accordingly.
+
 2014-06-11  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	* system.h (REG_CLASS_FROM_CONSTRAINT): Poison.
diff --git a/gcc/recog.c b/gcc/recog.c
index 94cdeec1fa462453f3fa9fae4e5482cd3754d7d6..9d9fa778a146faa4d22000030123ae402ab0df23 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -2415,18 +2415,6 @@ preprocess_constraints (int n_operands, int n_alternatives,
 		case TARGET_MEM_CONSTRAINT:
 		  op_alt[i].memory_ok = 1;
 		  break;
-		case '<':
-		  op_alt[i].decmem_ok = 1;
-		  break;
-		case '>':
-		  op_alt[i].incmem_ok = 1;
-		  break;
-		case 'V':
-		  op_alt[i].nonoffmem_ok = 1;
-		  break;
-		case 'o':
-		  op_alt[i].offmem_ok = 1;
-		  break;
 		case 'X':
 		  op_alt[i].anything_ok = 1;
 		  break;
diff --git a/gcc/recog.h b/gcc/recog.h
index 2017c85a49873e7056b415fb31ab6d8005d3f5d1..3008b1d4daca5431c47bc21c337252550a54b4e8 100644
--- a/gcc/recog.h
+++ b/gcc/recog.h
@@ -60,25 +60,17 @@ struct operand_alternative
   int matched : 8;
 
   /* Nonzero if '&' was found in the constraint string.  */
-  unsigned int earlyclobber:1;
+  unsigned int earlyclobber : 1;
   /* Nonzero if TARGET_MEM_CONSTRAINT was found in the constraint
      string.  */
-  unsigned int memory_ok:1;
-  /* Nonzero if 'o' was found in the constraint string.  */
-  unsigned int offmem_ok:1;
-  /* Nonzero if 'V' was found in the constraint string.  */
-  unsigned int nonoffmem_ok:1;
-  /* Nonzero if '<' was found in the constraint string.  */
-  unsigned int decmem_ok:1;
-  /* Nonzero if '>' was found in the constraint string.  */
-  unsigned int incmem_ok:1;
+  unsigned int memory_ok : 1;
   /* Nonzero if 'p' was found in the constraint string.  */
-  unsigned int is_address:1;
+  unsigned int is_address : 1;
   /* Nonzero if 'X' was found in the constraint string, or if the constraint
      string for this alternative was empty.  */
-  unsigned int anything_ok:1;
+  unsigned int anything_ok : 1;
 
-  unsigned int unused : 8;
+  unsigned int unused : 12;
 };
 
 /* Return the class for operand I of alternative ALT, taking matching