[gcc(refs/users/mikael/heads/refactor_descriptor_v08)] Factorisation gfc_conv_shift_descriptor

Mikael Morin mikael@gcc.gnu.org
Sat Sep 6 14:55:01 GMT 2025


https://gcc.gnu.org/g:13b2631720f9a53e318a519bb1417f6568ffc888

commit 13b2631720f9a53e318a519bb1417f6568ffc888
Author: Mikael Morin <mikael@gcc.gnu.org>
Date:   Fri Jul 18 14:45:07 2025 +0200

    Factorisation gfc_conv_shift_descriptor
    
    Factorisation gfc_conv_shift_descriptor

Diff:
---
 gcc/fortran/trans-expr.cc | 7 +------
 gcc/fortran/trans-stmt.cc | 6 +-----
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index e463702a02a3..3c5600d324a7 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -1060,7 +1060,6 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e,
   tree ctree;
   tree var;
   tree tmp;
-  int dim;
   bool unlimited_poly;
 
   unlimited_poly = class_ts.type == BT_CLASS
@@ -1127,11 +1126,7 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e,
 	  /* Array references with vector subscripts and non-variable expressions
 	     need be converted to a one-based descriptor.  */
 	  if (e->expr_type != EXPR_VARIABLE)
-	    {
-	      for (dim = 0; dim < e->rank; ++dim)
-		gfc_conv_shift_descriptor_lbound (&parmse->pre, parmse->expr,
-						  dim, gfc_index_one_node);
-	    }
+	    gfc_conv_shift_descriptor (&parmse->pre, parmse->expr, e->rank);
 
 	  if (class_ts.u.derived->components->as->rank != e->rank)
 	    {
diff --git a/gcc/fortran/trans-stmt.cc b/gcc/fortran/trans-stmt.cc
index 1867f67b16e3..57ca11e1bafb 100644
--- a/gcc/fortran/trans-stmt.cc
+++ b/gcc/fortran/trans-stmt.cc
@@ -2168,16 +2168,12 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block)
       if ((!sym->assoc->variable && !cst_array_ctor)
 	  || !whole_array)
 	{
-	  int dim;
-
 	  if (whole_array)
 	    gfc_add_modify (&se.pre, desc, se.expr);
 
 	  /* The generated descriptor has lower bound zero (as array
 	     temporary), shift bounds so we get lower bounds of 1.  */
-	  for (dim = 0; dim < e->rank; ++dim)
-	    gfc_conv_shift_descriptor_lbound (&se.pre, desc,
-					      dim, gfc_index_one_node);
+	  gfc_conv_shift_descriptor (&se.pre, desc, e->rank);
 	}
 
       if (e->expr_type == EXPR_FUNCTION


More information about the Gcc-cvs mailing list