aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJulian Brown <julian@codesourcery.com>2019-09-20 13:53:10 -0700
committerKwok Cheung Yeung <kcy@codesourcery.com>2022-06-21 14:11:20 +0100
commitebe33b92d3048123714185338d2657419d41f125 (patch)
tree1439f5d321cbc5f406e9394b0a619bbf648f8877 /gcc
parentcfa16d11d940f976fd0c22c62f4fbe0639780916 (diff)
downloadgcc-ebe33b92d3048123714185338d2657419d41f125.zip
gcc-ebe33b92d3048123714185338d2657419d41f125.tar.gz
gcc-ebe33b92d3048123714185338d2657419d41f125.tar.bz2
Handle references in OpenACC "private" clauses
gcc/ * gimplify.cc (localize_reductions): Rewrite references for OMP_CLAUSE_PRIVATE also.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog.omp5
-rw-r--r--gcc/gimplify.cc15
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp
index fd91f87..84ebebb 100644
--- a/gcc/ChangeLog.omp
+++ b/gcc/ChangeLog.omp
@@ -1,3 +1,8 @@
+2019-09-20 Julian Brown <julian@codesourcery.com>
+
+ * gimplify.cc (localize_reductions): Rewrite references for
+ OMP_CLAUSE_PRIVATE also.
+
2019-09-17 Tobias Burnus <tobias@codesourcery.com>
* gimplify.cc (gomp_oacc_needs_data_present): Remove unused variable.
diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc
index 76564c6..576633e 100644
--- a/gcc/gimplify.cc
+++ b/gcc/gimplify.cc
@@ -12610,6 +12610,21 @@ localize_reductions (tree clauses, tree body)
OMP_CLAUSE_REDUCTION_PRIVATE_DECL (c) = new_var;
}
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_PRIVATE)
+ {
+ var = OMP_CLAUSE_DECL (c);
+
+ if (!lang_hooks.decls.omp_privatize_by_reference (var))
+ continue;
+
+ type = TREE_TYPE (TREE_TYPE (var));
+ new_var = create_tmp_var (type, IDENTIFIER_POINTER (DECL_NAME (var)));
+
+ pr.ref_var = var;
+ pr.local_var = new_var;
+
+ walk_tree (&body, localize_reductions_r, &pr, NULL);
+ }
}