aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c/ChangeLog5
-rw-r--r--gcc/c/c-parser.c4
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/c-c++-common/goacc/combined-directives-2.c14
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;
+}