[gcc(refs/users/mikael/heads/refactor_descriptor_v291 .01)] Déplacement copy_coarray_desc_part vers trans-descriptor.cc

Mikael Morin via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:afec181a097b1489e5ad46332bf8db021df35e0d

commit afec181a097b1489e5ad46332bf8db021df35e0d
Author: Mikael Morin <[email protected]>
Date:   Wed Jul 22 19:41:56 2026 +0200

    Déplacement copy_coarray_desc_part vers trans-descriptor.cc

Diff:
---
 gcc/fortran/trans-descriptor.cc | 35 ++++++++++++++++++++++++++++++++++-
 gcc/fortran/trans-descriptor.h  |  2 ++
 gcc/fortran/trans-expr.cc       | 34 +---------------------------------
 3 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index dbbaf3aa0dd9..cfe341b603ab 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -1027,6 +1027,39 @@ gfc_set_descriptor_from_scalar_class (stmtblock_t *block, tree descr,
 }
 
 
+void
+gfc_copy_coarray_desc_part (stmtblock_t *block, tree dest, tree src)
+{
+  tree src_type = TREE_TYPE (src);
+  if (TYPE_LANG_SPECIFIC (src_type) && TYPE_LANG_SPECIFIC (src_type)->corank)
+    {
+      struct lang_type *lang_specific = TYPE_LANG_SPECIFIC (src_type);
+      for (int c = 0; c < lang_specific->corank; ++c)
+	{
+	  int dim = lang_specific->rank + c;
+	  tree codim = gfc_rank_cst[dim];
+
+	  if (lang_specific->lbound[dim])
+	    gfc_conv_descriptor_lbound_set (block, dest, codim,
+					    lang_specific->lbound[dim]);
+	  else
+	    gfc_conv_descriptor_lbound_set (
+	      block, dest, codim, gfc_conv_descriptor_lbound_get (src, codim));
+	  if (dim + 1 < lang_specific->corank)
+	    {
+	      if (lang_specific->ubound[dim])
+		gfc_conv_descriptor_ubound_set (block, dest, codim,
+						lang_specific->ubound[dim]);
+	      else
+		gfc_conv_descriptor_ubound_set (
+		  block, dest, codim,
+		  gfc_conv_descriptor_ubound_get (src, codim));
+	    }
+	}
+    }
+}
+
+
 void
 gfc_set_descriptor_from_scalar (stmtblock_t *block, tree descr,
 				tree scalar, gfc_expr *scalar_expr,
@@ -1037,7 +1070,7 @@ gfc_set_descriptor_from_scalar (stmtblock_t *block, tree descr,
 					    gfc_expr_attr (scalar_expr));
   gfc_conv_descriptor_dtype_set (block, descr,
 				 gfc_get_dtype (type));
-  copy_coarray_desc_part (block, descr, scalar);
+  gfc_copy_coarray_desc_part (block, descr, scalar);
   if (cond_presence)
     scalar = build3_loc (input_location, COND_EXPR,
 			 TREE_TYPE (scalar),
diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h
index 83f79cb7b6e2..2104d94897a0 100644
--- a/gcc/fortran/trans-descriptor.h
+++ b/gcc/fortran/trans-descriptor.h
@@ -85,6 +85,8 @@ tree gfc_create_null_actual_descriptor (stmtblock_t *, gfc_typespec *,
 
 void gfc_init_descriptor_variable (stmtblock_t *block, gfc_symbol *sym, tree descr);
 
+void gfc_copy_coarray_desc_part (stmtblock_t *, tree, tree);
+
 void gfc_set_descriptor_from_scalar_class (stmtblock_t *, tree, tree, gfc_expr *);
 void gfc_set_descriptor_from_scalar (stmtblock_t *, tree, tree, gfc_expr *,
 				     tree);
diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index d1c79ac51168..2f352640076e 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -768,38 +768,6 @@ gfc_get_vptr_from_expr (tree expr)
   return NULL_TREE;
 }
 
-static void
-copy_coarray_desc_part (stmtblock_t *block, tree dest, tree src)
-{
-  tree src_type = TREE_TYPE (src);
-  if (TYPE_LANG_SPECIFIC (src_type) && TYPE_LANG_SPECIFIC (src_type)->corank)
-    {
-      struct lang_type *lang_specific = TYPE_LANG_SPECIFIC (src_type);
-      for (int c = 0; c < lang_specific->corank; ++c)
-	{
-	  int dim = lang_specific->rank + c;
-	  tree codim = gfc_rank_cst[dim];
-
-	  if (lang_specific->lbound[dim])
-	    gfc_conv_descriptor_lbound_set (block, dest, codim,
-					    lang_specific->lbound[dim]);
-	  else
-	    gfc_conv_descriptor_lbound_set (
-	      block, dest, codim, gfc_conv_descriptor_lbound_get (src, codim));
-	  if (dim + 1 < lang_specific->corank)
-	    {
-	      if (lang_specific->ubound[dim])
-		gfc_conv_descriptor_ubound_set (block, dest, codim,
-						lang_specific->ubound[dim]);
-	      else
-		gfc_conv_descriptor_ubound_set (
-		  block, dest, codim,
-		  gfc_conv_descriptor_ubound_get (src, codim));
-	    }
-	}
-    }
-}
-
 void
 gfc_class_array_data_assign (stmtblock_t *block, tree lhs_desc, tree rhs_desc,
 			     bool lhs_type)
@@ -826,7 +794,7 @@ gfc_class_array_data_assign (stmtblock_t *block, tree lhs_desc, tree rhs_desc,
   gfc_add_modify (block, lhs_dim, rhs_dim);
 
   /* The corank dimensions are not copied by the ARRAY_RANGE_REF.  */
-  copy_coarray_desc_part (block, lhs_desc, rhs_desc);
+  gfc_copy_coarray_desc_part (block, lhs_desc, rhs_desc);
 }
 
 /* Takes a derived type expression and returns the address of a temporary
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.