From: Cesar Philippidis Date: Wed, 9 Mar 2016 19:39:53 +0000 (-0800) Subject: c-parser.c (c_parser_oacc_loop): Update cclauses and clauses when calling c_finish_om... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=96b3c82df1fffef2f30045d571589be8d866aaf4;p=gcc.git c-parser.c (c_parser_oacc_loop): Update cclauses and clauses when calling c_finish_omp_clauses. gcc/c/ * c-parser.c (c_parser_oacc_loop): Update cclauses and clauses when calling c_finish_omp_clauses. gcc/cp/ * parser.c (cp_parser_oacc_loop): Update cclauses and clauses when calling c_finish_omp_clauses. gcc/testsuite/ * c-c++-common/goacc/combined-directives-2.c: New test. From-SVN: r234089 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 2e54e5657e4..95fde9fb057 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2016-03-09 Cesar Philippidis + + * c-parser.c (c_parser_oacc_loop): Update cclauses and clauses + when calling c_finish_omp_clauses. + 2016-03-04 Bernd Schmidt PR c/69824 diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index a7d58270eae..60ec996bf70 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 4bb43db6bf1..b4b9b24c87b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2016-03-09 Cesar Philippidis + + * parser.c (cp_parser_oacc_loop): Update cclauses and clauses + when calling c_finish_omp_clauses. + 2016-03-08 Jason Merrill * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 726d5fc6a82..6ae45b0ca1a 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 14a2f67c2fa..31dd65e20b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-03-09 Cesar Philippidis + + * c-c++-common/goacc/combined-directives-2.c: New test. + 2016-03-09 David Malcolm 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 00000000000..c51e2f9c75b --- /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; +}