aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-parser.cc
diff options
context:
space:
mode:
authorKwok Cheung Yeung <kcyeung@baylibre.com>2024-12-12 21:22:20 +0000
committerSandra Loosemore <sloosemore@baylibre.com>2025-05-15 20:25:53 +0000
commiteaa3e514e956c5e9c2c0b96dfc2a037f9e476a16 (patch)
treed8235be4b2994b22304bced48836a504e781eb54 /gcc/c/c-parser.cc
parent90a497c233380b43e36dafaa6688ca45b2ba4f35 (diff)
downloadgcc-eaa3e514e956c5e9c2c0b96dfc2a037f9e476a16.zip
gcc-eaa3e514e956c5e9c2c0b96dfc2a037f9e476a16.tar.gz
gcc-eaa3e514e956c5e9c2c0b96dfc2a037f9e476a16.tar.bz2
openmp: Add support for non-constant iterator parameters in map, to and from clauses
This patch enables support for using non-constant expressions when specifying iterators in the map clause of target constructs and to/from clauses of target update constructs. gcc/ * gimplify.cc (omp_iterator_elems_length): New. (build_omp_iterators_loops): Change type of elements array to pointer of pointers if array length is non-constant, and assign size with indirect reference. Reorder elements added to iterator vector and add element containing the iteration count. Use omp_iterator_elems_length to compute element array size required. * gimplify.h (omp_iterator_elems_length): New prototype. * omp-low.cc (lower_omp_map_iterator_expr): Reorder elements read from iterator vector. If elements field is a pointer type, assign using pointer arithmetic followed by indirect reference, and return the field directly. (lower_omp_map_iterator_size): Reorder elements read from iterator vector. If elements field is a pointer type, assign using pointer arithmetic followed by indirect reference. (allocate_omp_iterator_elems): New. (free_omp_iterator_elems): New. (lower_omp_target): Call allocate_omp_iterator_elems before inserting loops sequence, and call free_omp_iterator_elems afterwards. * tree-pretty-print.cc (dump_omp_iterators): Print extra elements in iterator vector. gcc/testsuite/ * c-c++-common/gomp/target-map-iterators-3.c: Update expected Gimple output. * c-c++-common/gomp/target-map-iterators-5.c: New. * c-c++-common/gomp/target-update-iterators-3.c: Update expected Gimple output. * gfortran.dg/gomp/target-map-iterators-3.f90: Likewise. * gfortran.dg/gomp/target-map-iterators-5.f90: New. * gfortran.dg/gomp/target-update-iterators-3.f90: Update expected Gimple output. libgomp/ * testsuite/libgomp.c-c++-common/target-map-iterators-4.c: New. * testsuite/libgomp.c-c++-common/target-map-iterators-5.c: New. * testsuite/libgomp.c-c++-common/target-update-iterators-4.c: New. * testsuite/libgomp.fortran/target-map-iterators-4.f90: New. * testsuite/libgomp.fortran/target-map-iterators-5.f90: New. * testsuite/libgomp.fortran/target-update-iterators-4.f90: New.
Diffstat (limited to 'gcc/c/c-parser.cc')
0 files changed, 0 insertions, 0 deletions