]> git.ipfire.org Git - thirdparty/gcc.git/commit
OpenMP: Support OpenMP 5.0 "declare mapper" directives for C
authorJulian Brown <julian@codesourcery.com>
Fri, 30 May 2025 12:19:40 +0000 (14:19 +0200)
committerTobias Burnus <tburnus@baylibre.com>
Fri, 30 May 2025 12:19:40 +0000 (14:19 +0200)
commit0c8d92a9ac08d4bc4982f636a577166709312403
tree1d4f9d09a5f4b70a01b7e580411fea4ba82b6044
parent0e77309047a7b479c89f03dcaf2994e050d0f33e
OpenMP: Support OpenMP 5.0 "declare mapper" directives for C

This patch adds support for "declare mapper" directives (and the "mapper"
modifier on "map" clauses) for C.

gcc/c/ChangeLog:

* c-decl.cc (c_omp_mapper_id, c_omp_mapper_decl, c_omp_mapper_lookup,
c_omp_extract_mapper_directive, c_omp_map_array_section,
c_omp_scan_mapper_bindings_r, c_omp_scan_mapper_bindings): New
functions.
* c-objc-common.h (LANG_HOOKS_OMP_FINISH_MAPPER_CLAUSES,
LANG_HOOKS_OMP_MAPPER_LOOKUP, LANG_HOOKS_OMP_EXTRACT_MAPPER_DIRECTIVE,
LANG_HOOKS_OMP_MAP_ARRAY_SECTION): Define langhooks for C.
* c-parser.cc (c_parser_omp_clause_map): Add declare_mapper_p
parameter; handle mapper modifier.
(c_parser_omp_all_clauses): Update call to c_parser_omp_clause_map.
(c_parser_omp_target): Instantiate explicit mappers and record bindings
for implicit mappers.
(c_parser_omp_declare_mapper): Parse "declare mapper" directives.
(c_parser_omp_declare): Support "declare mapper".
(c_parser_omp_declare_reduction): Use inform not error_at.
* c-tree.h (c_omp_finish_mapper_clauses, c_omp_mapper_lookup,
c_omp_extract_mapper_directive, c_omp_map_array_section,
c_omp_mapper_id, c_omp_mapper_decl, c_omp_scan_mapper_bindings,
c_omp_instantiate_mappers): Add prototypes.
* c-typeck.cc (c_finish_omp_clauses): Handle GOMP_MAP_PUSH_MAPPER_NAME
and GOMP_MAP_POP_MAPPER_NAME.
(c_omp_finish_mapper_clauses): New function (langhook).

libgomp/ChangeLog:

* testsuite/libgomp.c-c++-common/declare-mapper-9.c: Enable for C.
* testsuite/libgomp.c-c++-common/declare-mapper-10.c: Likewise.
* testsuite/libgomp.c-c++-common/declare-mapper-11.c: Likewise.
* testsuite/libgomp.c-c++-common/declare-mapper-12.c: Likewise.
* testsuite/libgomp.c-c++-common/declare-mapper-13.c: Likewise.
* testsuite/libgomp.c-c++-common/declare-mapper-14.c: Likewise.

gcc/testsuite/ChangeLog:

* c-c++-common/gomp/declare-mapper-3.c: Enable for C.
* c-c++-common/gomp/declare-mapper-4.c: Likewise.
* c-c++-common/gomp/declare-mapper-5.c: Likewise.
* c-c++-common/gomp/declare-mapper-6.c: Likewise.
* c-c++-common/gomp/declare-mapper-7.c: Likewise.
* c-c++-common/gomp/declare-mapper-8.c: Likewise.
* c-c++-common/gomp/declare-mapper-9.c: Likewise.
* c-c++-common/gomp/declare-mapper-10.c: Likewise.
* c-c++-common/gomp/declare-mapper-12.c: Likewise.
* c-c++-common/gomp/map-6.c: Update dg-error.
* gcc.dg/gomp/udr-3.c: Update for change to dg-note.
* c-c++-common/gomp/declare-mapper-11.c: New.
* gcc.dg/gomp/declare-mapper-10.c: New test.
* gcc.dg/gomp/declare-mapper-11.c: New test.
* gcc.dg/gomp/declare-mapper-13.c: New test.
26 files changed:
gcc/c/c-decl.cc
gcc/c/c-objc-common.h
gcc/c/c-parser.cc
gcc/c/c-tree.h
gcc/c/c-typeck.cc
gcc/testsuite/c-c++-common/gomp/declare-mapper-10.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-11.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/declare-mapper-12.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-4.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-5.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-6.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-7.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-8.c
gcc/testsuite/c-c++-common/gomp/declare-mapper-9.c
gcc/testsuite/c-c++-common/gomp/map-6.c
gcc/testsuite/gcc.dg/gomp/declare-mapper-10.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/gomp/declare-mapper-11.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/gomp/declare-mapper-13.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/gomp/udr-3.c
libgomp/testsuite/libgomp.c-c++-common/declare-mapper-10.c
libgomp/testsuite/libgomp.c-c++-common/declare-mapper-11.c
libgomp/testsuite/libgomp.c-c++-common/declare-mapper-12.c
libgomp/testsuite/libgomp.c-c++-common/declare-mapper-13.c
libgomp/testsuite/libgomp.c-c++-common/declare-mapper-14.c
libgomp/testsuite/libgomp.c-c++-common/declare-mapper-9.c