]> git.ipfire.org Git - thirdparty/gcc.git/commit
OpenMP: Support acquires/release in 'omp require atomic_default_mem_order'
authorTobias Burnus <tobias@codesourcery.com>
Mon, 11 Dec 2023 14:19:02 +0000 (15:19 +0100)
committerTobias Burnus <tobias@codesourcery.com>
Mon, 11 Dec 2023 14:19:02 +0000 (15:19 +0100)
commit055f08feee3424a29403047a7049af467f2b26cd
tree417064b8af148bf8f49dd344cfe78a5829e17028
parent2505a8b41d3b74a545755a278f3750a29c1340b6
OpenMP: Support acquires/release in 'omp require atomic_default_mem_order'

This is an OpenMP 5.2 feature.

gcc/c/ChangeLog:

* c-parser.cc (c_parser_omp_requires): Handle acquires/release
in atomic_default_mem_order clause.
(c_parser_omp_atomic): Update.

gcc/cp/ChangeLog:

* parser.cc (cp_parser_omp_requires): Handle acquires/release
in atomic_default_mem_order clause.
(cp_parser_omp_atomic): Update.

gcc/fortran/ChangeLog:

* gfortran.h (enum gfc_omp_requires_kind): Add
OMP_REQ_ATOMIC_MEM_ORDER_ACQUIRE and OMP_REQ_ATOMIC_MEM_ORDER_RELEASE.
(gfc_namespace): Add a 7th bit to omp_requires.
* module.cc (enum ab_attribute): Add AB_OMP_REQ_MEM_ORDER_ACQUIRE
and AB_OMP_REQ_MEM_ORDER_RELEASE
(mio_symbol_attribute): Handle it.
* openmp.cc (gfc_omp_requires_add_clause): Update for acquire/release.
(gfc_match_omp_requires): Likewise.
(gfc_match_omp_atomic): Handle them for atomic_default_mem_order.
* parse.cc: Likewise.

gcc/testsuite/ChangeLog:

* c-c++-common/gomp/requires-3.c: Update for now valid code.
* gfortran.dg/gomp/requires-3.f90: Likewise.
* gfortran.dg/gomp/requires-2.f90: Update dg-error.
* gfortran.dg/gomp/requires-5.f90: Likewise.
* c-c++-common/gomp/requires-5.c: New test.
* c-c++-common/gomp/requires-6.c: New test.
* c-c++-common/gomp/requires-7.c: New test.
* c-c++-common/gomp/requires-8.c: New test.
* gfortran.dg/gomp/requires-10.f90: New test.
* gfortran.dg/gomp/requires-11.f90: New test.
16 files changed:
gcc/c/c-parser.cc
gcc/cp/parser.cc
gcc/fortran/gfortran.h
gcc/fortran/module.cc
gcc/fortran/openmp.cc
gcc/fortran/parse.cc
gcc/testsuite/c-c++-common/gomp/requires-3.c
gcc/testsuite/c-c++-common/gomp/requires-5.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/requires-6.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/requires-7.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/requires-8.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/requires-10.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/requires-11.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/gomp/requires-2.f90
gcc/testsuite/gfortran.dg/gomp/requires-3.f90
gcc/testsuite/gfortran.dg/gomp/requires-5.f90