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

Reply via email to