diff options
author | Kwok Cheung Yeung <kcyeung@baylibre.com> | 2025-05-03 20:42:46 +0000 |
---|---|---|
committer | Sandra Loosemore <sloosemore@baylibre.com> | 2025-05-15 20:25:53 +0000 |
commit | 6e66dfea0a5cbad897100a1841c8599d5812fab7 (patch) | |
tree | 73e9b818dde6cd994260cf3ac9367f320f2ab0d1 /gcc | |
parent | 752ef8f4f5ddf9a3372e6d5dc08df6aa05a60ea3 (diff) | |
download | gcc-6e66dfea0a5cbad897100a1841c8599d5812fab7.zip gcc-6e66dfea0a5cbad897100a1841c8599d5812fab7.tar.gz gcc-6e66dfea0a5cbad897100a1841c8599d5812fab7.tar.bz2 |
openmp, Fortran: Add support using iterators with custom mappers in Fortran
gcc/fortran/
* openmp.cc (gfc_omp_instantiate_mapper): Add argument for namespace.
Apply namespace to new clauses. Propagate namespace to nested
mappers.
(gfc_omp_instantiate_mappers): Pass namespace of clause to clauses
generated by mappers.
libgomp/
* testsuite/libgomp.fortran/mapper-iterators-1.f90: New test.
* testsuite/libgomp.fortran/mapper-iterators-2.f90: New test.
* testsuite/libgomp.fortran/mapper-iterators-3.f90: New test.
* testsuite/libgomp.fortran/mapper-iterators-4.f90: New test.
Co-authored-by: Andrew Stubbs <ams@baylibre.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/openmp.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc index d2f19db..c202045 100644 --- a/gcc/fortran/openmp.cc +++ b/gcc/fortran/openmp.cc @@ -14110,6 +14110,7 @@ static gfc_omp_namelist ** gfc_omp_instantiate_mapper (gfc_code *code, gfc_omp_namelist **outlistp, gfc_omp_namelist *clause, gfc_omp_map_op outer_map_op, gfc_omp_udm *udm, + gfc_namespace *ns, toc_directive cd, int list) { /* Here "sym" and "expr" describe the clause as written, to be substituted @@ -14227,14 +14228,15 @@ gfc_omp_instantiate_mapper (gfc_code *code, gfc_omp_namelist **outlistp, new_clause->u.map.op = new_kind; new_clause->where = clause->where; + new_clause->u2.ns = ns; if (mapper_clause->u3.udm && mapper_clause->u3.udm->udm != udm) { gfc_omp_udm *inner_udm = mapper_clause->u3.udm->udm; outlistp = gfc_omp_instantiate_mapper (code, outlistp, new_clause, - outer_map_op, inner_udm, cd, - list); + outer_map_op, inner_udm, ns, + cd, list); } else { @@ -14283,7 +14285,8 @@ gfc_omp_instantiate_mappers (gfc_code *code, gfc_omp_clauses *clauses, } clausep = gfc_omp_instantiate_mapper (code, clausep, clause, outer_map_op, - clause->u3.udm->udm, cd, list); + clause->u3.udm->udm, + clause->u2.ns, cd, list); *clausep = clause->next; invoked_mappers = true; } |