Hi, This patch series reworks how indirect struct (or class or derived-type) component mappings are lowered for OpenMP and OpenACC. The series is currently based on the og10 branch, but I'm planning to rebase it to trunk and repost soon.
Currently on og10, there are some conflicts with Chung-Lin's recent work to support indirect struct component mapping and (particularly) C++ lambdas for OpenMP -- some of those conflicts are addressed by this patch series, but some still need attention. There are a couple of regressions (see the last patch in the series) so the whole series isn't quite ready for og10 yet. Hopefully posting now will help us resolve those last bits! The first two patches in the series have been tested by themselves however, and those ones do *not* cause regressions. If it seems helpful, I can commit those now. Julian Julian Brown (7): [og10] Unify ARRAY_REF/INDIRECT_REF stripping code in extract_base_bit_offset [og10] Refactor struct lowering for OpenMP/OpenACC in gimplify.c [og10] Revert gimplify.c parts of "Fix template case of non-static member access inside member functions" [og10] Revert gimplify.c parts of "Arrow operator handling for C front-end in OpenMP map clauses" [og10] Rewrite GOMP_MAP_ATTACH_DETACH mappings for OpenMP also [og10] Rework indirect struct handling for OpenACC/OpenMP in gimplify.c [og10] WIP GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION changes gcc/fortran/trans-openmp.c | 20 +- gcc/gimplify.c | 1178 ++++++++++------- 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 + gcc/testsuite/g++.dg/gomp/target-3.C | 4 +- gcc/testsuite/g++.dg/gomp/target-this-2.C | 2 +- .../libgomp.oacc-c-c++-common/deep-copy-15.c | 68 + .../libgomp.oacc-c-c++-common/deep-copy-16.c | 95 ++ 9 files changed, 921 insertions(+), 488 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-c++-common/deep-copy-15.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c -- 2.29.2