aboutsummaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authorJulian Brown <julian@codesourcery.com>2019-10-14 13:12:39 -0700
committerThomas Schwinge <thomas@codesourcery.com>2020-03-03 12:51:25 +0100
commit833d954448cd353c3e40208ab9916edb5a7c5c5b (patch)
treecb5fc55f1ff6b9c0dc68206abacc311f8505980e /libgomp
parentde5b5fcdd6934bc58a28cd34a12930cf87bd7551 (diff)
downloadgcc-833d954448cd353c3e40208ab9916edb5a7c5c5b.zip
gcc-833d954448cd353c3e40208ab9916edb5a7c5c5b.tar.gz
gcc-833d954448cd353c3e40208ab9916edb5a7c5c5b.tar.bz2
[og9] Re-do OpenACC private variable resolution
gcc/ * config/gcn/gcn-protos.h (gcn_goacc_adjust_gangprivate_decl): Rename to... (gcn_goacc_adjust_private_decl): ...this. * config/gcn/gcn-tree.c (diagnostic-core.h): Include. (gcn_goacc_adjust_gangprivate_decl): Rename to... (gcn_goacc_adjust_private_decl): ...this. Add LEVEL parameter. * config/gcn/gcn.c (TARGET_GOACC_ADJUST_GANGPRIVATE_DECL): Rename to... (TARGET_GOACC_ADJUST_PRIVATE_DECL): ...this. * config/nvptx/nvptx.c (tree-pretty-print.h): Include. (nvptx_goacc_adjust_private_decl): New function. (TARGET_GOACC_ADJUST_PRIVATE_DECL): Define hook using above function. * doc/tm.texi.in (TARGET_GOACC_ADJUST_GANGPRIVATE_DECL): Rename to... (TARGET_GOACC_ADJUST_PRIVATE_DECL): ...this. * doc/tm.texi: Regenerated. * internal-fn.c (expand_UNIQUE): Handle IFN_UNIQUE_OACC_PRIVATE. * internal-fn.h (IFN_UNIQUE_CODES): Add OACC_PRIVATE. * omp-low.c (omp_context): Remove oacc_partitioning_levels field. (lower_oacc_reductions): Add PRIVATE_MARKER parameter. Insert before fork. (lower_oacc_head_tail): Add PRIVATE_MARKER parameter. Modify its gimple call arguments as appropriate. Don't set oacc_partitioning_levels in omp_context. Pass private_marker to lower_oacc_reductions. (oacc_record_private_var_clauses): Don't check for NULL ctx. (make_oacc_private_marker): New function. (lower_omp_for): Only call oacc_record_vars_in_bind for OpenACC contexts. Create private marker and pass to lower_oacc_head_tail. (lower_omp_target): Remove unnecessary call to oacc_record_private_var_clauses. Remove call to mark_oacc_gangprivate. Create private marker and pass to lower_oacc_reductions. (process_oacc_gangprivate_1): Remove. (lower_omp_1): Only call oacc_record_vars_in_bind for OpenACC. Don't iterate over contexts calling process_oacc_gangprivate_1. (omp-offload.c (oacc_loop_xform_head_tail): Treat private-variable markers like fork/join when transforming head/tail sequences. (execute_oacc_device_lower): Use IFN_UNIQUE_OACC_PRIVATE instead of "oacc gangprivate" attributes to determine partitioning level of variables. * omp-sese.c (find_gangprivate_vars): New function. (find_local_vars_to_propagate): Use GANGPRIVATE_VARS parameter instead of "oacc gangprivate" attribute to determine which variables are gang-private. (oacc_do_neutering): Use find_gangprivate_vars. * target.def (adjust_gangprivate_decl): Rename to... (adjust_private_decl): ...this. Update documentation (briefly). libgomp/ * testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90: Use oaccdevlow dump and update scanned output. * testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f90: Likewise. Add missing atomic to force worker partitioning for test variable. (cherry picked from openacc-gcc-9-branch commit bbad7288269195b39603cdfde6c15f9488de83dc)
Diffstat (limited to 'libgomp')
-rw-r--r--libgomp/ChangeLog.omp7
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f904
-rw-r--r--libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f908
3 files changed, 14 insertions, 5 deletions
diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp
index bf880ac..b1748ac 100644
--- a/libgomp/ChangeLog.omp
+++ b/libgomp/ChangeLog.omp
@@ -1,5 +1,12 @@
2019-10-16 Julian Brown <julian@codesourcery.com>
+ * testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90: Use
+ oaccdevlow dump and update scanned output.
+ * testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f90: Likewise.
+ Add missing atomic to force worker partitioning for test variable.
+
+2019-10-16 Julian Brown <julian@codesourcery.com>
+
* testsuite/libgomp.oacc-c-c++-common/serial-dims.c: Support AMD GCN.
2019-10-09 Tobias Burnus <tobias@codesourcery.com>
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90
index 9158b6f..dafc70c 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90
@@ -1,8 +1,8 @@
! Test for "oacc gangprivate" attribute on gang-private variables
! { dg-do run }
-! { dg-additional-options "-fdump-tree-omplower-details" }
-! { dg-final { scan-tree-dump-times "Setting 'oacc gangprivate' attribute for decl: integer\\(kind=4\\) w;" 1 "omplower" } } */
+! { dg-additional-options "-fdump-tree-oaccdevlow-details" }
+! { dg-final { scan-tree-dump-times "Decl UID \[0-9\]+ has gang partitioning: integer\\(kind=4\\) w;" 1 "oaccdevlow" } } */
program main
integer :: w, arr(0:31)
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f90
index d147229..90e06be 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f90
@@ -1,8 +1,8 @@
-! Test for lack of "oacc gangprivate" attribute on worker-private variables
+! Test for worker-private variables
! { dg-do run }
-! { dg-additional-options "-fdump-tree-omplower-details" }
-! { dg-final { scan-tree-dump-times "Setting 'oacc gangprivate' attribute for decl" 0 "omplower" } } */
+! { dg-additional-options "-fdump-tree-oaccdevlow-details" }
+! { dg-final { scan-tree-dump-times "Decl UID \[0-9\]+ has worker partitioning: integer\\(kind=4\\) w;" 1 "oaccdevlow" } } */
program main
integer :: w, arr(0:31)
@@ -13,7 +13,9 @@ program main
w = 0
!$acc loop seq
do i = 0, 31
+ !$acc atomic update
w = w + 1
+ !$acc end atomic
end do
arr(j) = w
end do