https://gcc.gnu.org/g:63042b167c14063ccea923ea95e7aded4d09db13

commit 63042b167c14063ccea923ea95e7aded4d09db13
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Tue Jul 22 11:32:27 2025 +0200

    Refactoring gfc_conv_descriptor_sm_get

Diff:
---
 gcc/fortran/trans-descriptor.cc | 7 +++++++
 gcc/fortran/trans-descriptor.h  | 1 +
 gcc/fortran/trans-expr.cc       | 6 ++----
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index bbffa7d168ed..f6ccefcb5fe6 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -586,6 +586,13 @@ gfc_conv_descriptor_ubound_set (stmtblock_t *block, tree 
desc,
   set_value (block, get_descriptor_ubound (desc, dim), value);
 }
 
+tree
+gfc_conv_descriptor_sm_get (tree desc, tree dim)
+{
+  return fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type,
+                         gfc_conv_descriptor_stride_get (desc, dim),
+                         gfc_conv_descriptor_span_get (desc));
+}
 
 
/*******************************************************************************
  * Array descriptor higher level routines.                                     
*
diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h
index 570b1b183287..1316259809a7 100644
--- a/gcc/fortran/trans-descriptor.h
+++ b/gcc/fortran/trans-descriptor.h
@@ -61,6 +61,7 @@ tree gfc_conv_descriptor_dimension_get (tree desc, int dim);
 tree gfc_conv_descriptor_stride_get (tree desc, tree dim);
 tree gfc_conv_descriptor_lbound_get (tree desc, tree dim);
 tree gfc_conv_descriptor_ubound_get (tree desc, tree dim);
+tree gfc_conv_descriptor_sm_get (tree desc, tree dim);
 
 void gfc_conv_descriptor_data_set (stmtblock_t *block, tree desc, tree value);
 void gfc_conv_descriptor_data_set (stmtblock_t *block, tree desc, tree value);
diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index 6eeb8c33c604..87a61446f080 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -6212,10 +6212,8 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *parmse, gfc_expr 
*e, gfc_symbol *fsym)
       tmp = fold_build2_loc (input_location, PLUS_EXPR, gfc_array_index_type,
                             tmp, gfc_index_one_node);
       gfc_add_modify (&loop_body, gfc_get_cfi_dim_extent (cfi, idx), tmp);
-      /* d->dim[n].sm = gfc->dim[i].stride  * gfc->span); */
-      tmp = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type,
-                            gfc_conv_descriptor_stride_get (gfc, idx),
-                            gfc_conv_descriptor_span_get (gfc));
+      /* d->dim[n].sm = gfc->dim[i].stride * gfc->span); */
+      tmp = gfc_conv_descriptor_sm_get (gfc, idx);
       gfc_add_modify (&loop_body, gfc_get_cfi_dim_sm (cfi, idx), tmp);
 
       /* Generate loop.  */

Reply via email to