]> git.ipfire.org Git - thirdparty/gcc.git/commit
OpenMP: Update "declare target"/OpenMP context interaction
authorSandra Loosemore <sloosemore@baylibre.com>
Thu, 26 Dec 2024 18:16:00 +0000 (18:16 +0000)
committerSandra Loosemore <sloosemore@baylibre.com>
Thu, 16 Jan 2025 18:12:25 +0000 (18:12 +0000)
commit3c8df3693c40c7a29dde3915b66d29fad7134868
tree2a7c9811010c9076caf846a639a69851321ddf53
parentfdeceba59bee60040fd58203b6fe0239d789eade
OpenMP: Update "declare target"/OpenMP context interaction

The code and test case previously implemented the OpenMP 5.0 spec,
which said in section 2.3.1:

"For functions within a declare target block, the target trait is added
to the beginning of the set..."

In OpenMP 5.1, this was changed to
"For device routines, the target trait is added to the beginning of
the set..."

In OpenMP 5.2 and TR12, it says:
"For procedures that are determined to be target function variants
by a declare target directive..."

The definition of "device routine" in OpenMP 5.1 is confusing, but
certainly the intent of the later versions of the spec is clear that
it doesn't just apply to functions within a begin declare target/end
declare target block.

The only use of the "omp declare target block" function attribute was
to support the 5.0 language, so it can be removed.  This patch changes
the context augmentation to use the "omp declare target" attribute
instead.

gcc/c-family/ChangeLog
* c-attribs.cc (c_common_gnu_attributes): Delete "omp declare
target block".

gcc/c/ChangeLog
* c-decl.cc (c_decl_attributes): Don't add "omp declare target
block".

gcc/cp/ChangeLog
* decl2.cc (cplus_decl_attributes): Don't add "omp declare target
block".

gcc/ChangeLog
* omp-general.cc (omp_complete_construct_context): Check
"omp declare target" attribute, not "omp declare target block".

gcc/testsuite/ChangeLog
* c-c++-common/gomp/declare-target-indirect-2.c : Adjust
expected output for removal of "omp declare target block".
* c-c++-common/gomp/declare-variant-8.c: Likewise, the variant
call to f20 is now resolved differently.
* c-c++-common/gomp/reverse-offload-1.c: Adjust expected output.
* gfortran.dg/gomp/declare-variant-8.f90: Likewise, both f18
and f20 now resolve to the variant.  Delete obsolete comments.
gcc/c-family/c-attribs.cc
gcc/c/c-decl.cc
gcc/cp/decl2.cc
gcc/omp-general.cc
gcc/testsuite/c-c++-common/gomp/declare-target-indirect-2.c
gcc/testsuite/c-c++-common/gomp/declare-variant-8.c
gcc/testsuite/c-c++-common/gomp/reverse-offload-1.c
gcc/testsuite/gfortran.dg/gomp/declare-variant-8.f90