This patch series fixes support for mixing arbitrary derived type
accesses and array element accesses in OpenACC directives, and fixes a
bug in derived-type lowering.
Somewhat relatedly, it also allows strided accesses in update directives.
Further commentary alongside each patch. Some of the test cases were
originally written by Tobias Burnus.
Tested with offloading to AMD GCN. OK for mainline (or for stage1)?
Thanks,
Julian
Julian Brown (4):
openacc: Remove dereference for non-pointer derived-type members
openacc: Use class_pointer instead of pointer attribute for class
types
openacc: Fix lowering for derived-type mappings through array elements
openacc: Allow strided arrays in update directives
gcc/fortran/openmp.c | 5 +-
gcc/fortran/trans-openmp.c | 196 +++++++++++-------
gcc/gimplify.c | 12 ++
.../gfortran.dg/goacc/array-with-dt-1.f90 | 11 +
.../gfortran.dg/goacc/array-with-dt-2.f90 | 10 +
.../gfortran.dg/goacc/array-with-dt-3.f90 | 14 ++
.../gfortran.dg/goacc/array-with-dt-4.f90 | 18 ++
.../gfortran.dg/goacc/array-with-dt-5.f90 | 12 ++
.../goacc/derived-classtypes-1.f90 | 129 ++++++++++++
.../derivedtypes-arrays-1.f90 | 109 ++++++++++
.../libgomp.oacc-fortran/update-dt-array.f90 | 53 +++++
11 files changed, 487 insertions(+), 82 deletions(-)
create mode 100644 gcc/testsuite/gfortran.dg/goacc/array-with-dt-1.f90
create mode 100644 gcc/testsuite/gfortran.dg/goacc/array-with-dt-2.f90
create mode 100644 gcc/testsuite/gfortran.dg/goacc/array-with-dt-3.f90
create mode 100644 gcc/testsuite/gfortran.dg/goacc/array-with-dt-4.f90
create mode 100644 gcc/testsuite/gfortran.dg/goacc/array-with-dt-5.f90
create mode 100644 gcc/testsuite/gfortran.dg/goacc/derived-classtypes-1.f90
create mode 100644
libgomp/testsuite/libgomp.oacc-fortran/derivedtypes-arrays-1.f90
create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
--
2.29.2