diff options
author | Julian Brown <julian@codesourcery.com> | 2019-10-14 13:12:39 -0700 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2020-03-03 12:51:25 +0100 |
commit | 833d954448cd353c3e40208ab9916edb5a7c5c5b (patch) | |
tree | cb5fc55f1ff6b9c0dc68206abacc311f8505980e /libgomp | |
parent | de5b5fcdd6934bc58a28cd34a12930cf87bd7551 (diff) | |
download | gcc-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.omp | 7 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90 | 4 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-fortran/gangprivate-attrib-2.f90 | 8 |
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 |