This is a new series of patches for the og10 branch to rework how indirect
struct components are handled for offloaded OpenACC code regions. Compared
to the version posted previously here:

  https://gcc.gnu.org/pipermail/gcc-patches/2021-May/570058.html

...the patches have been rebased to the current og10 tip, and adjusted so
that the rework largely only affects OpenACC rather than both OpenACC and
OpenMP. Recent changes on the og10 branch (and apparent divergence between
the OpenACC and OpenMP APIs themselves) make it harder to unify code
paths for the two APIs, though further work could probably remove some
of the duplication that remains after these patches are committed.

Tested with offloading to nvptx. I will apply to the og10 branch shortly.

Julian

Julian Brown (4):
  [og10] Rewrite GOMP_MAP_ATTACH_DETACH mappings unconditionally
  [og10] Unify ARRAY_REF/INDIRECT_REF stripping code in
    extract_base_bit_offset
  [og10] Refactor struct lowering for OpenACC/OpenMP in gimplify.c
  [og10] Rework indirect struct handling for OpenACC in gimplify.c

 gcc/fortran/trans-openmp.c                    |   20 +-
 gcc/gimplify.c                                | 1151 +++++++++++------
 gcc/omp-low.c                                 |   16 +-
 gcc/testsuite/g++.dg/goacc/member-array-acc.C |   13 +
 gcc/testsuite/g++.dg/gomp/member-array-omp.C  |   13 +
 .../testsuite/libgomp.oacc-c++/deep-copy-17.C |  101 ++
 .../libgomp.oacc-c-c++-common/deep-copy-15.c  |   68 +
 .../libgomp.oacc-c-c++-common/deep-copy-16.c  |  231 ++++
 8 files changed, 1202 insertions(+), 411 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/goacc/member-array-acc.C
 create mode 100644 gcc/testsuite/g++.dg/gomp/member-array-omp.C
 create mode 100644 libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C
 create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-15.c
 create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c

-- 
2.29.2

Reply via email to