]> git.ipfire.org Git - thirdparty/gcc.git/commit
OpenMP: Update OMP_REQUIRES_TARGET_USED for declare_target + interop
authorTobias Burnus <tburnus@baylibre.com>
Wed, 25 Sep 2024 11:57:02 +0000 (13:57 +0200)
committerTobias Burnus <tburnus@baylibre.com>
Wed, 25 Sep 2024 11:57:02 +0000 (13:57 +0200)
commitfcff9c3dad4f356cbf56feaed7442893203a3003
tree354b7baa5532894a7d9f267d10b35c09e53c3dc9
parent5d87b98a4ae58d7e6c0dad041c72cd73b693269d
OpenMP: Update OMP_REQUIRES_TARGET_USED for declare_target + interop

Older versions of the OpenMP specification were not clear about what counted
as device usage. Newer (like TR13) are rather clear. Hence, this commit adds
GCC's target-used flag also when a 'declare target' or an 'interop' are
encountered.  (The latter only to Fortran as C/C++ parsing support is still
missing.) TR13 also lists 'dispatch' as target-used construct (as it has the
device clause) and 'device_safesync' as clause with global requirement
property, but both are not yet supported in GCC.

gcc/c/ChangeLog:

* c-parser.cc (c_parser_omp_declare_target): Set target-used bit
in omp_requires_mask.

gcc/cp/ChangeLog:

* parser.cc (cp_parser_omp_declare_target): Set target-used bit
in omp_requires_mask.

gcc/fortran/ChangeLog:

* parse.cc (decode_omp_directive): Set target-used bit of
omp_requires_mask when encountering the declare_target or interop
directive.

gcc/testsuite/ChangeLog:

* gfortran.dg/gomp/interop-1.f90: Add dg-error for missing
omp requires requirement and declare_variant usage.
* gfortran.dg/gomp/requires-8.f90: Likewise.
gcc/c/c-parser.cc
gcc/cp/parser.cc
gcc/fortran/parse.cc
gcc/testsuite/gfortran.dg/gomp/interop-1.f90
gcc/testsuite/gfortran.dg/gomp/requires-8.f90