From 2c3b8badaac235ce78ce22ac7582346d16118987 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 9 Aug 2019 09:23:03 +0200 Subject: [PATCH] re PR c/91401 (schedule + dist_schedule clauses rejected on distribute parallel for) PR c/91401 c/ * 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 warning for duplicate dist_schedule clauses. cp/ * parser.c (cp_parser_omp_clause_dist_schedule): Comment out the check_no_duplicate_clause call, instead emit a warning for duplicate dist_schedule clauses. testsuite/ * c-c++-common/gomp/pr91401-1.c: New test. * c-c++-common/gomp/pr91401-2.c: New test. From-SVN: r274226 --- gcc/c/ChangeLog | 7 +++++++ gcc/c/c-parser.c | 5 ++++- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/parser.c | 6 ++++-- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/c-c++-common/gomp/pr91401-1.c | 10 ++++++++++ gcc/testsuite/c-c++-common/gomp/pr91401-2.c | 15 +++++++++++++++ 7 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/gomp/pr91401-1.c create mode 100644 gcc/testsuite/c-c++-common/gomp/pr91401-2.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 533aebc40c3..5363f1c8510 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,10 @@ +2019-08-09 Jakub Jelinek + + 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 + warning for duplicate dist_schedule clauses. + 2019-08-08 Richard Sandiford * c-decl.c (finish_enum): Clear C_TYPE_BEING_DEFINED. diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 9b5cfcf50d9..9585ba2ca67 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -14811,7 +14811,10 @@ c_parser_omp_clause_dist_schedule (c_parser *parser, tree list) c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<,%> or %<)%>"); - check_no_duplicate_clause (list, OMP_CLAUSE_SCHEDULE, "schedule"); + /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, + "dist_schedule"); */ + if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE)) + warning_at (loc, 0, "too many %qs clauses", "dist_schedule"); if (t == error_mark_node) return list; diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5b0bf2b62b8..93b6e5ac27b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2019-08-09 Jakub Jelinek + + PR c/91401 + * parser.c (cp_parser_omp_clause_dist_schedule): Comment out the + check_no_duplicate_clause call, instead emit a warning for duplicate + dist_schedule clauses. + 2019-08-08 Paolo Carlini * decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 14b724095c4..a2efb551617 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -35258,8 +35258,10 @@ cp_parser_omp_clause_dist_schedule (cp_parser *parser, tree list, else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN)) goto resync_fail; - check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, "dist_schedule", - location); + /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, + "dist_schedule", location); */ + if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE)) + warning_at (location, 0, "too many %qs clauses", "dist_schedule"); OMP_CLAUSE_CHAIN (c) = list; return c; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 639e426d10f..f67c3101628 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2019-08-09 Jakub Jelinek + + PR c/91401 + * c-c++-common/gomp/pr91401-1.c: New test. + * c-c++-common/gomp/pr91401-2.c: New test. + 2019-08-09 Alexandre Oliva * gcc.target/i386/sse2-mul-1.c: Use rand. Drop fallback. diff --git a/gcc/testsuite/c-c++-common/gomp/pr91401-1.c b/gcc/testsuite/c-c++-common/gomp/pr91401-1.c new file mode 100644 index 00000000000..f588bf6f16c --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr91401-1.c @@ -0,0 +1,10 @@ +/* PR c/91401 */ + +void +foo (void) +{ + int i; + #pragma omp distribute parallel for schedule (static) dist_schedule (static) + for (i = 0; i < 64; i++) + ; +} diff --git a/gcc/testsuite/c-c++-common/gomp/pr91401-2.c b/gcc/testsuite/c-c++-common/gomp/pr91401-2.c new file mode 100644 index 00000000000..f537e66e27c --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr91401-2.c @@ -0,0 +1,15 @@ +#pragma omp declare target +void f0 (void); + +void +f1 (void) +{ + int i; + #pragma omp distribute dist_schedule(static) dist_schedule(static) /* { dg-warning "too many 'dist_schedule' clauses" } */ + for (i = 0; i < 8; ++i) + f0 (); + #pragma omp distribute dist_schedule(static,2) dist_schedule(static,4) /* { dg-warning "too many 'dist_schedule' clauses" } */ + for (i = 0; i < 8; ++i) + f0 (); +} +#pragma omp end declare target -- 2.30.2