diff options
-rw-r--r-- | gcc/c/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c/c-parser.c | 4 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/parser.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/goacc/combined-directives-2.c | 14 |
6 files changed, 32 insertions, 4 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 2e54e56..95fde9f 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2016-03-09 Cesar Philippidis <cesar@codesourcery.com> + + * c-parser.c (c_parser_oacc_loop): Update cclauses and clauses + when calling c_finish_omp_clauses. + 2016-03-04 Bernd Schmidt <bschmidt@redhat.com> PR c/69824 diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index a7d5827..60ec996 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -13789,9 +13789,9 @@ c_parser_oacc_loop (location_t loc, c_parser *parser, char *p_name, { clauses = c_oacc_split_loop_clauses (clauses, cclauses); if (*cclauses) - c_finish_omp_clauses (*cclauses, false); + *cclauses = c_finish_omp_clauses (*cclauses, false); if (clauses) - c_finish_omp_clauses (clauses, false); + clauses = c_finish_omp_clauses (clauses, false); } tree block = c_begin_compound_stmt (true); diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4bb43db..b4b9b24 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2016-03-09 Cesar Philippidis <cesar@codesourcery.com> + + * parser.c (cp_parser_oacc_loop): Update cclauses and clauses + when calling c_finish_omp_clauses. + 2016-03-08 Jason Merrill <jason@redhat.com> * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 726d5fc..6ae45b0 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -35346,9 +35346,9 @@ cp_parser_oacc_loop (cp_parser *parser, cp_token *pragma_tok, char *p_name, { clauses = c_oacc_split_loop_clauses (clauses, cclauses); if (*cclauses) - finish_omp_clauses (*cclauses, false); + *cclauses = finish_omp_clauses (*cclauses, false); if (clauses) - finish_omp_clauses (clauses, false); + clauses = finish_omp_clauses (clauses, false); } tree block = begin_omp_structured_block (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 14a2f67..31dd65e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-03-09 Cesar Philippidis <cesar@codesourcery.com> + + * c-c++-common/goacc/combined-directives-2.c: New test. + 2016-03-09 David Malcolm <dmalcolm@redhat.com> PR c/68473 diff --git a/gcc/testsuite/c-c++-common/goacc/combined-directives-2.c b/gcc/testsuite/c-c++-common/goacc/combined-directives-2.c new file mode 100644 index 0000000..c51e2f9 --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/combined-directives-2.c @@ -0,0 +1,14 @@ +/* Ensure that bogus clauses aren't propagated in combined loop + constructs. */ + +int +main () +{ + int a, i; + +#pragma acc parallel loop vector copy(a[0:100]) reduction(+:a) /* { dg-error "'a' does not have pointer or array type" } */ + for (i = 0; i < 100; i++) + a++; + + return a; +} |