IĀ found the names like usm->usm and usm->mapper_id vs.
usm->usm->mapper_id rather confusing. Hence, I added both a comment and
made the names clearer. The usm->requested_mapper_id is set when using
'map(mapper(my_name), to: ...' and usm->resolved_usm points to the
respective mapper created by 'declare mapper' (which has a 'mapper_id').
I hope that reduces confusion - it least it reduced mine. Committed as
r17-1613-geed2ca30e49d81 Tobias
commit eed2ca30e49d8177921e8c01cdd4af69ac5e9892
Author: Tobias Burnus <[email protected]>
Date: Wed Jun 17 12:16:55 2026 +0200
Fortran/OpenMP: Rename declare-mapper struct members
The usm->mapper_id vs. usm->usm->mapper_id and
also the usm->usm itself was a bit confusing.
Hence, this is now:
usm->requested_mapper_id
usm->resolved_usm
where the latter has
usm->resolved_usm->mapper_id
Hereby, usm->requested_mapper_id is set for a map/to/from
clause such as 'map(mapper(my_name), to: x' - while
the resolved_usm points to an object that has been
created by 'declare mapper'.
gcc/fortran/ChangeLog:
* gfortran.h (struct gfc_omp_udm): Add comment.
(struct gfc_omp_namelist_udm): Likewise; rename members
mapper_id to requested_mapper_id and usm to resolved_usm.
* module.cc (load_omp_udms, write_omp_udm): Update accordingly.
* openmp.cc (gfc_match_omp_clauses, resolve_omp_clauses): Likewise.
* trans-openmp.cc (gfc_trans_omp_clauses): Likewise.
---
gcc/fortran/gfortran.h | 7 ++++---
gcc/fortran/module.cc | 12 ++++++------
gcc/fortran/openmp.cc | 10 +++++-----
gcc/fortran/trans-openmp.cc | 4 ++--
4 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 801dd856e1b..ecbd4612bbe 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -1900,7 +1900,7 @@ typedef struct gfc_omp_namelist_udr
gfc_omp_namelist_udr;
#define gfc_get_omp_namelist_udr() XCNEW (gfc_omp_namelist_udr)
-
+/* Store list of user-defined mapper (created by 'omp declare mapper'). */
typedef struct gfc_omp_udm
{
struct gfc_omp_udm *next;
@@ -1922,10 +1922,11 @@ typedef struct gfc_omp_udm
gfc_omp_udm;
#define gfc_get_omp_udm() XCNEW (gfc_omp_udm)
+/* Mapper data for a MAP or TO/FROM list item. */
typedef struct gfc_omp_namelist_udm
{
- const char *mapper_id;
- struct gfc_omp_udm *udm;
+ const char *requested_mapper_id;
+ struct gfc_omp_udm *resolved_udm;
}
gfc_omp_namelist_udm;
#define gfc_get_omp_namelist_udm() XCNEW (gfc_omp_namelist_udm)
diff --git a/gcc/fortran/module.cc b/gcc/fortran/module.cc
index b95997fe672..3bb81bab68a 100644
--- a/gcc/fortran/module.cc
+++ b/gcc/fortran/module.cc
@@ -5565,12 +5565,12 @@ load_omp_udms (void)
if (peek_atom () != ATOM_RPAREN)
{
n->u3.udm = gfc_get_omp_namelist_udm ();
- mio_pool_string (&n->u3.udm->mapper_id);
+ mio_pool_string (&n->u3.udm->requested_mapper_id);
- if (n->u3.udm->mapper_id == NULL)
- n->u3.udm->mapper_id = gfc_get_string ("%s", "");
+ if (n->u3.udm->requested_mapper_id == NULL)
+ n->u3.udm->requested_mapper_id = gfc_get_string ("%s", "");
- mio_pointer_ref (&n->u3.udm->udm);
+ mio_pointer_ref (&n->u3.udm->resolved_udm);
}
mio_rparen ();
@@ -6687,8 +6687,8 @@ write_omp_udm (gfc_omp_udm *udm)
if (n->u3.udm)
{
- mio_pool_string (&n->u3.udm->mapper_id);
- mio_pointer_ref (&n->u3.udm->udm);
+ mio_pool_string (&n->u3.udm->requested_mapper_id);
+ mio_pointer_ref (&n->u3.udm->resolved_udm);
}
mio_rparen ();
diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc
index c341afc762e..526ad03c828 100644
--- a/gcc/fortran/openmp.cc
+++ b/gcc/fortran/openmp.cc
@@ -3940,7 +3940,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask,
if (mapper_id[0] != '\0')
{
n->u3.udm = gfc_get_omp_namelist_udm ();
- n->u3.udm->mapper_id
+ n->u3.udm->requested_mapper_id
= gfc_get_string ("%s", mapper_id);
}
n->u2.ns = ns_iter;
@@ -10504,8 +10504,8 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses,
if (ts->type == BT_DERIVED || ts->type == BT_CLASS)
{
- const char *mapper_id = (n->u3.udm
- ? n->u3.udm->mapper_id : "");
+ const char *mapper_id
+ = (n->u3.udm ? n->u3.udm->requested_mapper_id : "");
gfc_omp_udm *udm = gfc_find_omp_udm (gfc_current_ns,
mapper_id, ts);
if (mapper_id[0] != '\0' && !udm)
@@ -10517,9 +10517,9 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses,
{
gcc_assert (mapper_id[0] == '\0');
n->u3.udm = gfc_get_omp_namelist_udm ();
- n->u3.udm->mapper_id = mapper_id;
+ n->u3.udm->requested_mapper_id = mapper_id;
}
- n->u3.udm->udm = udm;
+ n->u3.udm->resolved_udm = udm;
}
}
}
diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc
index 84f9ffb5129..11873d3b6fe 100644
--- a/gcc/fortran/trans-openmp.cc
+++ b/gcc/fortran/trans-openmp.cc
@@ -4343,8 +4343,8 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses,
if (n->u3.udm)
gfc_error ("Sorry, declared mapper %qs, used for %qs at %L, "
"is not yet supported",
- n->u3.udm->mapper_id[0] != '\0'
- ? n->u3.udm->mapper_id : "default",
+ n->u3.udm->requested_mapper_id[0] != '\0'
+ ? n->u3.udm->requested_mapper_id : "default",
n->sym->name, &n->where);
// Remove duplicates