This is a split version of the patch previously posted here: https://gcc.gnu.org/legacy-ml/gcc-patches/2020-01/msg00512.html
There were actually a couple of different issues addressed by that patch, and Thomas raised another (or so). This separated-out version should be more-obviously safe (in terms of maintaining backwards compatibility, where that makes sense). Further commentary on individual patches. Tested (as a series) with offloading to NVPTX. OK? Julian Julian Brown (3): OpenACC "exit data" copyout for struct members Strip GOMP_MAP_STRUCT from OpenACC exit data mappings Fortran derived-type mapping fix gcc/fortran/trans-openmp.c | 4 +- gcc/gimplify.c | 3 +- .../goacc/struct-enter-exit-data-1.c | 35 +++++++++++++++ .../gfortran.dg/goacc/mapping-tests-3.f90 | 15 +++++++ .../gfortran.dg/goacc/mapping-tests-4.f90 | 17 +++++++ libgomp/oacc-mem.c | 32 -------------- .../struct-copyout-1.c | 38 ++++++++++++++++ .../struct-copyout-2.c | 44 +++++++++++++++++++ 8 files changed, 153 insertions(+), 35 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/goacc/struct-enter-exit-data-1.c create mode 100644 gcc/testsuite/gfortran.dg/goacc/mapping-tests-3.f90 create mode 100644 gcc/testsuite/gfortran.dg/goacc/mapping-tests-4.f90 create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c -- 2.23.0