From bb522e2eea23703375e65a044c93e8144ef4664e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 9 Aug 2019 09:24:51 +0200 Subject: c-parser.c (check_no_duplicate_clause): Simplify using omp_find_clause. c/ * c-parser.c (check_no_duplicate_clause): Simplify using omp_find_clause. (c_parser_omp_clause_if): Fix up printing of target {enter,exit} data directive name modifiers. (c_parser_omp_clause_proc_bind): Check for duplicate proc_bind clause. cp/ * parser.c (check_no_duplicate_clause): Simplify using omp_find_clause. (cp_parser_omp_clause_if): Fix up printing of target {enter,exit} data directive name modifiers. testsuite/ * c-c++-common/gomp/if-4.c: New test. * c-c++-common/gomp/clause-dups-1.c: New test. From-SVN: r274227 --- gcc/c/ChangeLog | 6 ++++++ gcc/c/c-parser.c | 16 +++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'gcc/c') diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 5363f1c..816c3e0 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,5 +1,11 @@ 2019-08-09 Jakub Jelinek + * c-parser.c (check_no_duplicate_clause): Simplify using + omp_find_clause. + (c_parser_omp_clause_if): Fix up printing of target {enter,exit} data + directive name modifiers. + (c_parser_omp_clause_proc_bind): Check for duplicate proc_bind clause. + PR c/91401 * c-parser.c (c_parser_omp_clause_dist_schedule): Fix up typos in the check_no_duplicate_clause call. Comment it out, instead emit a diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 9585ba2..055e650 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -11898,15 +11898,8 @@ static void check_no_duplicate_clause (tree clauses, enum omp_clause_code code, const char *name) { - tree c; - - for (c = clauses; c ; c = OMP_CLAUSE_CHAIN (c)) - if (OMP_CLAUSE_CODE (c) == code) - { - location_t loc = OMP_CLAUSE_LOCATION (c); - error_at (loc, "too many %qs clauses", name); - break; - } + if (tree c = omp_find_clause (clauses, code)) + error_at (OMP_CLAUSE_LOCATION (c), "too many %qs clauses", name); } /* OpenACC 2.0 @@ -12616,8 +12609,8 @@ c_parser_omp_clause_if (c_parser *parser, tree list, bool is_omp) case OMP_TARGET_DATA: p = "target data"; break; case OMP_TARGET: p = "target"; break; case OMP_TARGET_UPDATE: p = "target update"; break; - case OMP_TARGET_ENTER_DATA: p = "enter data"; break; - case OMP_TARGET_EXIT_DATA: p = "exit data"; break; + case OMP_TARGET_ENTER_DATA: p = "target enter data"; break; + case OMP_TARGET_EXIT_DATA: p = "target exit data"; break; default: gcc_unreachable (); } error_at (location, "too many % clauses with %qs modifier", @@ -14856,6 +14849,7 @@ c_parser_omp_clause_proc_bind (c_parser *parser, tree list) else goto invalid_kind; + check_no_duplicate_clause (list, OMP_CLAUSE_PROC_BIND, "proc_bind"); c_parser_consume_token (parser); parens.skip_until_found_close (parser); c = build_omp_clause (clause_loc, OMP_CLAUSE_PROC_BIND); -- cgit v1.1