From c43f93d7098f47e1939d25ee4b15ed59341b602e Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 9 Sep 2015 07:24:48 +0000 Subject: [PATCH] PR c/67501 * c-parser.c (c_parser_oacc_all_clauses, c_parser_omp_all_clauses): Remove invalid clause from list of clauses even if parser->error is set. * c-c++-common/gomp/pr67501.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227578 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c/ChangeLog | 5 +++++ gcc/c/c-parser.c | 4 ++-- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/c-c++-common/gomp/pr67501.c | 12 ++++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/gomp/pr67501.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 141be369b6d9..d7eeb2da4e4b 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,5 +1,10 @@ 2015-09-09 Jakub Jelinek + PR c/67501 + * c-parser.c (c_parser_oacc_all_clauses, + c_parser_omp_all_clauses): Remove invalid clause from + list of clauses even if parser->error is set. + PR c/67500 * c-parser.c (c_parser_omp_clause_aligned, c_parser_omp_clause_safelen, c_parser_omp_clause_simdlen): Fix up diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 6213fd452376..072f94b89151 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -11752,7 +11752,7 @@ c_parser_oacc_all_clauses (c_parser *parser, omp_clause_mask mask, first = false; - if (((mask >> c_kind) & 1) == 0 && !parser->error) + if (((mask >> c_kind) & 1) == 0) { /* Remove the invalid clause(s) from the list to avoid confusing the rest of the compiler. */ @@ -11981,7 +11981,7 @@ c_parser_omp_all_clauses (c_parser *parser, omp_clause_mask mask, first = false; - if (((mask >> c_kind) & 1) == 0 && !parser->error) + if (((mask >> c_kind) & 1) == 0) { /* Remove the invalid clause(s) from the list to avoid confusing the rest of the compiler. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c1c0b6c01da6..996fb61d46c7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2015-09-09 Jakub Jelinek + PR c/67501 + * c-c++-common/gomp/pr67501.c: New test. + PR c/67500 * gcc.dg/gomp/pr67500.c: New test. diff --git a/gcc/testsuite/c-c++-common/gomp/pr67501.c b/gcc/testsuite/c-c++-common/gomp/pr67501.c new file mode 100644 index 000000000000..8a7140faf28d --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr67501.c @@ -0,0 +1,12 @@ +/* PR c/67501 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp" } */ + +void +foo (void) +{ + int i, j; + #pragma omp for simd copyprivate(j /* { dg-error "before end of line" } */ + for (i = 0; i < 16; ++i) /* { dg-error "is not valid for" "" { target *-*-* } 9 } */ + ; +} -- 2.47.3