diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 2dea03cce3d74360976d39ab5967c202a2799aa5..fa89e7979401e54e9342cb9f01d3dd4585442e14 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1468,15 +1468,22 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p) if (flag_openacc && oacc_declare_returns != NULL) { - tree *c = oacc_declare_returns->get (t); + tree key = t; + if (DECL_HAS_VALUE_EXPR_P (key)) + { + key = DECL_VALUE_EXPR (key); + if (TREE_CODE (key) == INDIRECT_REF) + key = TREE_OPERAND (key, 0); + } + tree *c = oacc_declare_returns->get (key); if (c != NULL) { if (ret_clauses) OMP_CLAUSE_CHAIN (*c) = ret_clauses; - ret_clauses = *c; + ret_clauses = unshare_expr (*c); - oacc_declare_returns->remove (t); + oacc_declare_returns->remove (key); if (oacc_declare_returns->is_empty ()) { diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c index 0f51badca42e5f7723f481c234905e4504257f2a..714935772c1bb5f152020aaf89c94347a7326ff7 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c @@ -59,8 +59,3 @@ main () return 0; } - - -/* { dg-xfail-run-if "TODO PR90861" { *-*-* } { "-DACC_MEM_SHARED=0" } } - This might XPASS if the compiler happens to put the two 'A' VLAs at the same - address. */