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