]> git.ipfire.org Git - thirdparty/gcc.git/commit
Separate OpenACC kernels regions in data and parallel parts
authorGergö Barany <gergo@codesourcery.com>
Mon, 21 Jan 2019 13:28:20 +0000 (05:28 -0800)
committerThomas Schwinge <thomas@codesourcery.com>
Tue, 3 Mar 2020 11:16:37 +0000 (12:16 +0100)
commita773b7e7038cbc9e77d83f28adf1130c628be863
tree5419e8e6ade44e1076a8d9b6de54310a4e3efade
parenta6bd9ce7243dbceac23a2f18a157ac9a2f26b0b5
Separate OpenACC kernels regions in data and parallel parts

This is the first in a series of patches that completely rework the handling
of the OpenACC "kernels" directive. In the future, kernels regions will be
transformed into data regions containing a sequence of serial and parallel
offloaded regions. This first patch sets up a new pass that is responsible
for this transformation, and in a first step constructs the new data region
containing a parallel region with the original kernels region's body.

gcc/
* Makefile.in: Add...
* omp-oacc-kernels.c: ... this new file for the kernels conversion
pass.
* flag-types.h (enum openacc_kernels): Add "split" style.  Adjust
all users.
* doc/invoke.texi (-fopenacc-kernels): Update.
* passes.def: Add pass_convert_oacc_kernels to pipeline.
* tree-pass.h (make_pass_convert_oacc_kernels): Add declaration.
gcc/testsuite/
* c-c++-common/goacc/kernels-conversion.c: New test.
* gfortran.dg/goacc/kernels-conversion.f95: Likewise.
* c-c++-common/goacc/if-clause-2.c: Update.
* gfortran.dg/goacc/kernels-tree.f95: Likewise.

(cherry picked from openacc-gcc-9-branch commit
f769c55eb290873a16b3da32fa15c03ff0d5578e)
14 files changed:
gcc/ChangeLog.omp
gcc/Makefile.in
gcc/c-family/c.opt
gcc/doc/invoke.texi
gcc/flag-types.h
gcc/fortran/lang.opt
gcc/omp-oacc-kernels.c [new file with mode: 0644]
gcc/passes.def
gcc/testsuite/ChangeLog.omp
gcc/testsuite/c-c++-common/goacc/if-clause-2.c
gcc/testsuite/c-c++-common/goacc/kernels-conversion.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-conversion.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
gcc/tree-pass.h