Improve message for wrong number of alternatives.
authorJoern Rennecke <joern.rennecke@embecosm.com>
Mon, 17 May 2021 12:44:49 +0000 (13:44 +0100)
committerJoern Rennecke <joern.rennecke@embecosm.com>
Mon, 17 May 2021 12:44:49 +0000 (13:44 +0100)
gcc/
* genoutput.c (validate_insn_alternatives) Make "wrong number of
alternatives" message more specific, and remove assumption on where
the problem is.

gcc/genoutput.c

index 8e911cc..6d4ab81 100644 (file)
@@ -757,6 +757,7 @@ validate_insn_alternatives (class data *d)
        int which_alternative = 0;
        int alternative_count_unsure = 0;
        bool seen_write = false;
+       bool alt_mismatch = false;
 
        for (p = d->operand[start].constraint; (c = *p); p += len)
          {
@@ -813,8 +814,19 @@ validate_insn_alternatives (class data *d)
            if (n == 0)
              n = d->operand[start].n_alternatives;
            else if (n != d->operand[start].n_alternatives)
-             error_at (d->loc, "wrong number of alternatives in operand %d",
-                       start);
+             {
+               if (!alt_mismatch)
+                 {
+                   alt_mismatch = true;
+                   error_at (d->loc,
+                             "alternative number mismatch: "
+                             "operand %d has %d, operand %d has %d",
+                             0, n, start, d->operand[start].n_alternatives);
+                 }
+               else
+                 error_at (d->loc, "operand %d has %d alternatives",
+                   start, d->operand[start].n_alternatives);
+             }
          }
       }