From patchwork Tue May 30 11:16:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tobias Burnus X-Patchwork-Id: 70311 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BCEA63856605 for ; Tue, 30 May 2023 11:16:44 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id DE6CB3858C5E for ; Tue, 30 May 2023 11:16:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DE6CB3858C5E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="6.00,204,1681200000"; d="diff'?scan'208";a="8003943" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 30 May 2023 03:16:24 -0800 IronPort-SDR: +KPgWdQ4SCEFWpky9gBe+nljHUnI6IzAXt2l/8OavyOFs9be4W47+C1QylxRFK8Y8+uVtKHypZ DC4O24VUWkv966cFBbZwwcg6RDRyv1tf2adiFLTuJwaU3WWCK1blWPtAaotW1ES5HcTa8Zfv92 7skhzyW+No87w1Ypwnl27C/Ke0dg77/+VE4LYWQGOrEz1AvOLE+M7a1tUbMhwUYBpstyVfYKKG orupmDfbdOe+5JtCBB/ae/w10zfBkCuONvNOFt3dpWLFkfmgJFC1IRaOLer/qks8gQQWuWOXPT ZXI= Message-ID: <76f458f6-0063-e4dc-6b17-63c70ba07f3e@codesourcery.com> Date: Tue, 30 May 2023 13:16:19 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.1 Content-Language: en-US To: gcc-patches From: Tobias Burnus Subject: [committed] OpenMP: Improve C/C++ parsing error message [PR109999] X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" I stumbled over that error message the other day and found it a bit confusing: error: expected ‘#pragma omp’ clause before ‘uses_allocators’ The new wording is not the best, but I think at least better: error: expected an OpenMP clause before ‘uses_allocators’ ('uses_allocators' is a valid OpenMP 5.x clause but not yet handled in GCC; There is a patch that implements the support but some review-requested changes are still required before it can be merged.) Committed as r14-1404-ga899401404186843f38462c8fc9de733f19ce864 Tobias PS: Jakub did wonder about the translatability of "expect ..." + "", but it is a preexisting issue – and the commit makes it neither worse nor better than before. ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 commit a899401404186843f38462c8fc9de733f19ce864 Author: Tobias Burnus Date: Tue May 30 12:49:09 2023 +0200 OpenMP: Improve C/C++ parsing error message [PR109999] Replace error: expected '#pragma omp' clause before ... by the the more readable/clearer error: expected an OpenMP clause before ... (And likewise for '#pragma acc' and OpenACC.) PR c/109999 gcc/c/ChangeLog: * c-parser.cc (c_parser_oacc_all_clauses, c_parser_omp_all_clauses): Improve error wording. gcc/cp/ChangeLog: * parser.cc (cp_parser_oacc_all_clauses, cp_parser_omp_all_clauses): Improve error wording. gcc/testsuite/ChangeLog: * c-c++-common/goacc/asyncwait-1.c: Update dg-error. * c-c++-common/goacc/clauses-fail.c: Likewise. * c-c++-common/goacc/data-2.c: Likewise. * c-c++-common/gomp/declare-target-2.c: Likewise. * c-c++-common/gomp/directive-1.c: Likewise. * g++.dg/goacc/data-1.C: Likewise. --- gcc/c/c-parser.cc | 4 ++-- gcc/cp/parser.cc | 4 ++-- gcc/testsuite/c-c++-common/goacc/asyncwait-1.c | 4 ++-- gcc/testsuite/c-c++-common/goacc/clauses-fail.c | 8 ++++---- gcc/testsuite/c-c++-common/goacc/data-2.c | 2 +- gcc/testsuite/c-c++-common/gomp/declare-target-2.c | 4 ++-- gcc/testsuite/c-c++-common/gomp/directive-1.c | 2 +- gcc/testsuite/g++.dg/goacc/data-1.C | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index 0ec75348091..5baa501dbee 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -17692,7 +17692,7 @@ c_parser_oacc_all_clauses (c_parser *parser, omp_clause_mask mask, c_name, clauses); break; default: - c_parser_error (parser, "expected %<#pragma acc%> clause"); + c_parser_error (parser, "expected an OpenACC clause"); goto saw_error; } @@ -18050,7 +18050,7 @@ c_parser_omp_all_clauses (c_parser *parser, omp_clause_mask mask, c_name = "enter"; break; default: - c_parser_error (parser, "expected %<#pragma omp%> clause"); + c_parser_error (parser, "expected an OpenMP clause"); goto saw_error; } diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 5feed77c7ac..1c9aa671851 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -41087,7 +41087,7 @@ cp_parser_oacc_all_clauses (cp_parser *parser, omp_clause_mask mask, c_name, clauses); break; default: - cp_parser_error (parser, "expected %<#pragma acc%> clause"); + cp_parser_error (parser, "expected an OpenACC clause"); goto saw_error; } @@ -41489,7 +41489,7 @@ cp_parser_omp_all_clauses (cp_parser *parser, omp_clause_mask mask, c_name = "enter"; break; default: - cp_parser_error (parser, "expected %<#pragma omp%> clause"); + cp_parser_error (parser, "expected an OpenMP clause"); goto saw_error; } diff --git a/gcc/testsuite/c-c++-common/goacc/asyncwait-1.c b/gcc/testsuite/c-c++-common/goacc/asyncwait-1.c index 1857d65a0b2..3f0b1451cf6 100644 --- a/gcc/testsuite/c-c++-common/goacc/asyncwait-1.c +++ b/gcc/testsuite/c-c++-common/goacc/asyncwait-1.c @@ -185,9 +185,9 @@ f (int N, float *a, float *b) #pragma acc wait (1.0) /* { dg-error "expression must be integral" } */ -#pragma acc wait 1 /* { dg-error "expected '#pragma acc' clause before numeric constant" } */ +#pragma acc wait 1 /* { dg-error "expected an OpenACC clause before numeric constant" } */ -#pragma acc wait N /* { dg-error "expected '#pragma acc' clause before 'N'" } */ +#pragma acc wait N /* { dg-error "expected an OpenACC clause before 'N'" } */ #pragma acc wait async (1 2) /* { dg-error "expected '\\)' before numeric constant" } */ diff --git a/gcc/testsuite/c-c++-common/goacc/clauses-fail.c b/gcc/testsuite/c-c++-common/goacc/clauses-fail.c index 853d010d038..41d7e6bd194 100644 --- a/gcc/testsuite/c-c++-common/goacc/clauses-fail.c +++ b/gcc/testsuite/c-c++-common/goacc/clauses-fail.c @@ -5,17 +5,17 @@ f (void) { int i; -#pragma acc parallel one /* { dg-error "expected '#pragma acc' clause before 'one'" } */ +#pragma acc parallel one /* { dg-error "expected an OpenACC clause before 'one'" } */ ; -#pragma acc kernels eins /* { dg-error "expected '#pragma acc' clause before 'eins'" } */ +#pragma acc kernels eins /* { dg-error "expected an OpenACC clause before 'eins'" } */ ; -#pragma acc data two /* { dg-error "expected '#pragma acc' clause before 'two'" } */ +#pragma acc data two /* { dg-error "expected an OpenACC clause before 'two'" } */ ; #pragma acc parallel -#pragma acc loop deux /* { dg-error "expected '#pragma acc' clause before 'deux'" } */ +#pragma acc loop deux /* { dg-error "expected an OpenACC clause before 'deux'" } */ for (i = 0; i < 2; ++i) ; } diff --git a/gcc/testsuite/c-c++-common/goacc/data-2.c b/gcc/testsuite/c-c++-common/goacc/data-2.c index a8723b04c8f..eafe1454336 100644 --- a/gcc/testsuite/c-c++-common/goacc/data-2.c +++ b/gcc/testsuite/c-c++-common/goacc/data-2.c @@ -5,7 +5,7 @@ foo (void) int n; #pragma acc enter data copyin (a, b) async wait #pragma acc enter data create (b[20:30]) async wait -#pragma acc enter data (a) /* { dg-error "expected '#pragma acc' clause before '\\\(' token" } */ +#pragma acc enter data (a) /* { dg-error "expected an OpenACC clause before '\\\(' token" } */ /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */ #pragma acc enter data create (b(1:10)) /* { dg-error "expected '\\\)' before '\\\(' token" } */ #pragma acc exit data delete (a) if (0) diff --git a/gcc/testsuite/c-c++-common/gomp/declare-target-2.c b/gcc/testsuite/c-c++-common/gomp/declare-target-2.c index 97602dc7992..7b47e2b4182 100644 --- a/gcc/testsuite/c-c++-common/gomp/declare-target-2.c +++ b/gcc/testsuite/c-c++-common/gomp/declare-target-2.c @@ -59,7 +59,7 @@ int n, o, s, t; #pragma omp declare target (s, t, s) /* { dg-error "appears more than once on the same .declare target. directive" } */ int p, q, r; #pragma omp declare target (p) to (q) /* { dg-error "expected end of line before .to." } */ -#pragma omp declare target to (p) (q) link (r) /* { dg-error "expected .#pragma omp. clause before" } */ -#pragma omp declare target link (r) (p) /* { dg-error "expected .#pragma omp. clause before" } */ +#pragma omp declare target to (p) (q) link (r) /* { dg-error "expected an OpenMP clause before" } */ +#pragma omp declare target link (r) (p) /* { dg-error "expected an OpenMP clause before" } */ #pragma omp declare target #pragma omp end declare target to (p) /* { dg-error "expected end of line before .to." } */ diff --git a/gcc/testsuite/c-c++-common/gomp/directive-1.c b/gcc/testsuite/c-c++-common/gomp/directive-1.c index e1218bd6869..fc441538778 100644 --- a/gcc/testsuite/c-c++-common/gomp/directive-1.c +++ b/gcc/testsuite/c-c++-common/gomp/directive-1.c @@ -20,7 +20,7 @@ foo (void) #pragma omp allocate, (i) /* { dg-error "expected '\\\(' before ',' token" } */ /* { dg-error "expected end of line before ',' token" "" { target c++ } .-1 } */ /* { dg-message "not yet supported" "" { target *-*-* } .-2 } */ - #pragma omp critical, (bar) /* { dg-error "expected '#pragma omp' clause before '\\\(' token" } */ + #pragma omp critical, (bar) /* { dg-error "expected an OpenMP clause before '\\\(' token" } */ ; #pragma omp flush, (k, l) /* { dg-error "expected '\\\(' or end of line before ',' token" "" { target c } } */ /* { dg-error "expected end of line before ',' token" "" { target c++ } .-1 } */ diff --git a/gcc/testsuite/g++.dg/goacc/data-1.C b/gcc/testsuite/g++.dg/goacc/data-1.C index 73de964a518..58f333652cd 100644 --- a/gcc/testsuite/g++.dg/goacc/data-1.C +++ b/gcc/testsuite/g++.dg/goacc/data-1.C @@ -5,7 +5,7 @@ foo (int &a, int (&b)[100], int &n) #pragma acc enter data create (b[20:30]) async wait #pragma acc enter data (a) - /* { dg-error "expected '#pragma acc' clause before '\\\(' token" "" { target *-*-* } .-1 } */ + /* { dg-error "expected an OpenACC clause before '\\\(' token" "" { target *-*-* } .-1 } */ /* { dg-error "has no data movement clause" "" { target *-*-* } .-2 } */ #pragma acc enter data create (b(1:10)) /* { dg-error "expected '\\\)' before '\\\(' token" } */ @@ -28,7 +28,7 @@ foo (T &a, T (&b)[100], T &n) #pragma acc enter data create (b[20:30]) async wait #pragma acc enter data (a) - /* { dg-error "expected '#pragma acc' clause before '\\\(' token" "" { target *-*-* } .-1 } */ + /* { dg-error "expected an OpenACC clause before '\\\(' token" "" { target *-*-* } .-1 } */ /* { dg-error "has no data movement clause" "" { target *-*-* } .-2 } */ #pragma acc enter data create (b(1:10)) /* { dg-error "expected '\\\)' before '\\\(' token" } */