]> git.ipfire.org Git - thirdparty/gcc.git/commit
openmp: Add support for iterators in 'target update' clauses (C/C++)
authorKwok Cheung Yeung <kcyeung@baylibre.com>
Wed, 6 Aug 2025 00:07:46 +0000 (01:07 +0100)
committerKwok Cheung Yeung <kcyeung@baylibre.com>
Wed, 6 Aug 2025 00:37:10 +0000 (01:37 +0100)
commit87262627fd65a1a7acd80a529077f098a7e26f18
tree01f79c7771e9c389b6cc5077b19255c67359069d
parent8b8b0eada6ff03707b26a13202a40a436d4e6a38
openmp: Add support for iterators in 'target update' clauses (C/C++)

This adds support for iterators in 'to' and 'from' clauses in the
'target update' OpenMP directive.

gcc/c/

* c-parser.cc (c_parser_omp_clause_from_to): Parse 'iterator' modifier.
* c-typeck.cc (c_finish_omp_clauses): Finish iterators for to/from
clauses.

gcc/cp/

* parser.cc (cp_parser_omp_clause_from_to): Parse 'iterator' modifier.
* semantics.cc (finish_omp_clauses): Finish iterators for to/from
clauses.

gcc/

* gimplify.cc (remove_unused_omp_iterator_vars): Display unused
variable warning for 'to' and 'from' clauses.
(gimplify_scan_omp_clauses): Add argument for iterator loop sequence.
Gimplify the clause decl and size into the iterator loop if iterators
are used.
(gimplify_omp_workshare): Add argument for iterator loops sequence
in call to gimplify_scan_omp_clauses.
(gimplify_omp_target_update): Call remove_unused_omp_iterator_vars and
build_omp_iterators_loops.  Add loop sequence as argument when calling
gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses and building
the Gimple statement.
* tree-pretty-print.cc (dump_omp_clause): Call dump_omp_iterators
for to/from clauses with iterators.
* tree.cc (omp_clause_num_ops): Add extra operand for OMP_CLAUSE_FROM
and OMP_CLAUSE_TO.
* tree.h (OMP_CLAUSE_HAS_ITERATORS): Add check for OMP_CLAUSE_TO and
OMP_CLAUSE_FROM.
(OMP_CLAUSE_ITERATORS): Likewise.

gcc/testsuite/

* c-c++-common/gomp/target-update-iterators-1.c: New.
* c-c++-common/gomp/target-update-iterators-2.c: New.
* c-c++-common/gomp/target-update-iterators-3.c: New.

libgomp/

* target.c (gomp_update): Call gomp_merge_iterator_maps.  Free
allocated variables.
* testsuite/libgomp.c-c++-common/target-update-iterators-1.c: New.
* testsuite/libgomp.c-c++-common/target-update-iterators-2.c: New.
* testsuite/libgomp.c-c++-common/target-update-iterators-3.c: New.
15 files changed:
gcc/c/c-parser.cc
gcc/c/c-typeck.cc
gcc/cp/parser.cc
gcc/cp/semantics.cc
gcc/gimplify.cc
gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c [new file with mode: 0644]
gcc/tree-pretty-print.cc
gcc/tree.cc
gcc/tree.h
libgomp/target.c
libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-1.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-2.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-3.c [new file with mode: 0644]