From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1006) id 3B0853846079; Mon, 17 May 2021 12:52:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3B0853846079 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Joern Rennecke To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-836] Improve message for wrong number of alternatives. X-Act-Checkin: gcc X-Git-Author: Joern Rennecke X-Git-Refname: refs/heads/master X-Git-Oldrev: 7606865198b241b4c944f66761d6506b02ead951 X-Git-Newrev: bdd8e3dd60c4f6080df74fe02b6579451fda6a21 Message-Id: <20210517125246.3B0853846079@sourceware.org> Date: Mon, 17 May 2021 12:52:46 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2021 12:52:46 -0000 https://gcc.gnu.org/g:bdd8e3dd60c4f6080df74fe02b6579451fda6a21 commit r12-836-gbdd8e3dd60c4f6080df74fe02b6579451fda6a21 Author: Joern Rennecke Date: Mon May 17 13:44:49 2021 +0100 Improve message for wrong number of alternatives. gcc/ * genoutput.c (validate_insn_alternatives) Make "wrong number of alternatives" message more specific, and remove assumption on where the problem is. Diff: --- gcc/genoutput.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gcc/genoutput.c b/gcc/genoutput.c index 8e911cce2f5..6d4ab812696 100644 --- a/gcc/genoutput.c +++ b/gcc/genoutput.c @@ -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); + } } }