OpenACC 'kernels' decomposition: resolve wrong-code cases unless manually making...
authorThomas Schwinge <thomas@codesourcery.com>
Fri, 11 Mar 2022 21:31:51 +0000 (22:31 +0100)
committerThomas Schwinge <thomas@codesourcery.com>
Sat, 12 Mar 2022 14:37:27 +0000 (15:37 +0100)
commita07b8f4fb756484893b5612cbe9410970dc76db9
treecb2dc031e84f0a6000d23acc6fa6a7681cc3ae12
parent535afbd959bc72de85fca36ba6417f075cca1018
OpenACC 'kernels' decomposition: resolve wrong-code cases unless manually making certain variables addressable [PR100280, PR104892]

Currently in OpenACC 'kernels' decomposition, there is special handling of
'GOMP_MAP_FORCE_TOFROM', documented to be done to avoid "internal compiler
errors in later passes".  For performance reasons, the current repetitive
to/from device copying for every region is not ideal, compared to using
'present' clauses, as done for almost all other 'GOMP_MAP_*'.  Also, the
current special handling (incomplete, evidently) is the reason for the PR104892
misbehavior.  For PR100280 etc. we've resolved all such known ICEs -- removing
the special handling for 'GOMP_MAP_FORCE_TOFROM' now resolves PR104892.

PR middle-end/100280
PR middle-end/104892
gcc/
* omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
Remove special handling of 'GOMP_MAP_FORCE_TOFROM'.
gcc/testsuite/
* c-c++-common/goacc/kernels-decompose-2.c: Adjust.
* c-c++-common/goacc/kernels-decompose-pr100400-1-1.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr100400-1-2.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr100400-1-3.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr100400-1-4.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr104061-1-1.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr104061-1-2.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr104061-1-3.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr104061-1-4.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr104132-1.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr104133-1.c: Likewise.
* c-c++-common/goacc/kernels-decompose-pr104774-1.c: Likewise.
* gfortran.dg/goacc/classify-kernels.f95: Likewise.
* gfortran.dg/goacc/kernels-decompose-2.f95: Likewise.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/declare-vla.c: Adjust.
* testsuite/libgomp.oacc-c-c++-common/default-1.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-reduction-1.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/parallel-dims.c: Likewise.
* testsuite/libgomp.oacc-fortran/asyncwait-1.f90: Likewise.
* testsuite/libgomp.oacc-fortran/kernels-reduction-1.f90:
Likewise.
22 files changed:
gcc/omp-oacc-kernels-decompose.cc
gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-1.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-2.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-3.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-4.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr104061-1-1.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr104061-1-2.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr104061-1-3.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr104061-1-4.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr104132-1.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr104133-1.c
gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr104774-1.c
gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95
gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95
libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-reduction-1.c
libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
libgomp/testsuite/libgomp.oacc-fortran/asyncwait-1.f90
libgomp/testsuite/libgomp.oacc-fortran/kernels-reduction-1.f90