[PATCH] Fix component mappings with derived types for OpenACC
Julian Brown
julian@codesourcery.com
Fri Jan 10 01:51:00 GMT 2020
Hi,
This patch fixes a bug with mapping Fortran components (i.e. with the
manual deep-copy support) which themselves have derived types. I've
also added a couple of new tests to make sure such mappings are lowered
correctly, and to check for the case that Tobias found in the message:
https://gcc.gnu.org/ml/gcc-patches/2020-01/msg00215.html
The previous incorrect mapping was causing the error condition mentioned
in that message to fail to trigger, and I think (my!) code in libgomp
(goacc_exit_data_internal) to handle GOMP_MAP_STRUCT specially was
papering over the bad mapping also. Oops!
I haven't attempted to implement the (harder) sub-copy detection, if
that is indeed supposed to be forbidden by the spec. This patch should
get us to the same behaviour in Fortran as in C & C++ though.
Tested with offloading to nvptx, also with the (uncommitted)
reference-count self-checking patch enabled.
OK?
Thanks,
Julian
ChangeLog
gcc/fortran/
* trans-openmp.c (gfc_trans_omp_clauses): Use inner not decl for
components with derived types.
gcc/testsuite/
* gfortran.dg/goacc/mapping-tests-3.f90: New test.
* gfortran.dg/goacc/mapping-tests-4.f90: New test.
libgomp/
* oacc-mem.c (goacc_exit_data_internal): Remove special (no-copyback)
behaviour for GOMP_MAP_STRUCT.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: component-mappings-derived-types-1.diff
Type: text/x-patch
Size: 3656 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20200110/0f73268d/attachment.bin>
More information about the Gcc-patches
mailing list