[c, openacc] Handle non-var-decl in mark_vars_oacc_gangprivate
2018-05-01 Tom de Vries <tom@codesourcery.com>
PR target/85465
* c-parser.c (mark_vars_oacc_gangprivate): Skip BLOCK_VARS that are not
VAR_DECL.
* testsuite/libgomp.oacc-c/pr85465.c: New test.
---
gcc/c/c-parser.c | 3 ++-
libgomp/testsuite/libgomp.oacc-c/pr85465.c | 11 +++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
@@ -14210,7 +14210,8 @@ mark_vars_oacc_gangprivate (tree *tp,
tree block = BIND_EXPR_BLOCK (*tp);
for (tree var = BLOCK_VARS (block); var; var = DECL_CHAIN (var))
{
- gcc_assert (TREE_CODE (var) == VAR_DECL);
+ if (TREE_CODE (var) != VAR_DECL)
+ continue;
DECL_ATTRIBUTES (var)
= tree_cons (get_identifier ("oacc gangprivate"),
NULL, DECL_ATTRIBUTES (var));
new file mode 100644
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-w" } */
+
+int
+main (void)
+{
+#pragma acc parallel
+ foo ();
+
+ return 0;
+}