- update record_reg_classes change to be consistent with
authorDavid Edelsohn <dje@gcc.gnu.org>
Sat, 24 Oct 1998 14:19:32 +0000 (10:19 -0400)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sat, 24 Oct 1998 14:19:32 +0000 (10:19 -0400)
  Kenner's change to gcc.

From-SVN: r23275

gcc/regclass.c

index 8d873f95f5e66e2f10e969480a5f356336dd2b29..ef1dce2bdeaeda12cdd9e4d27d4a0d379ca515d3 100644 (file)
@@ -1200,6 +1200,9 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
          int win = 0;
          unsigned char c;
 
+         /* Initially show we know nothing about the register class.  */
+         classes[i] = NO_REGS;
+
          /* If this operand has no constraints at all, we can conclude 
             nothing about it since anything is valid.  */
 
@@ -1211,8 +1214,11 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
              continue;
            }
 
-         /* Ascertain modifiers for line and skip any modifiers that might
-            occur before first constraint.  */
+         /* If this alternative is only relevant when this operand
+            matches a previous operand, we do different things depending
+            on whether this operand is a pseudo-reg or not.  We must process
+            any modifiers for the operand before we can make this test.  */
+
          while (*p == '%' || *p == '=' || *p == '+' || *p == '&')
            {
              if (*p == '=')
@@ -1223,12 +1229,6 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
              p++;
            }
 
-         classes[i] = NO_REGS;
-
-         /* If this alternative is only relevant when this operand
-            matches a previous operand, we do different things depending
-            on whether this operand is a pseudo-reg or not.  */
-
          if (p[0] >= '0' && p[0] <= '0' + i && (p[1] == ',' || p[1] == 0))
            {
              j = p[0] - '0';