https://gcc.gnu.org/g:1757afa9c1787747668e48343311014ad7fb9e60

commit 1757afa9c1787747668e48343311014ad7fb9e60
Author: Mikael Morin <[email protected]>
Date:   Thu Aug 6 13:56:59 2026 +0200

    Simplification initialisation scalar dtype

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

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index a0d7087048c0..431f8445765b 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -1009,19 +1009,17 @@ gfc_grow_array (stmtblock_t * pblock, tree desc, tree 
extra)
 
 
 void
-gfc_set_descriptor_from_scalar (stmtblock_t *block, tree descr,
-                               tree scalar, gfc_expr *scalar_expr,
+gfc_set_descriptor_from_scalar (stmtblock_t *block, tree descr, tree scalar,
                                tree cond_presence, tree caf_token)
 {
   if (flag_coarray == GFC_FCOARRAY_LIB && caf_token)
     gfc_conv_descriptor_token_set (block, descr, caf_token);
 
-  tree type = gfc_get_scalar_to_descriptor_type (TREE_TYPE (scalar),
-                                                gfc_expr_attr (scalar_expr));
+  tree scalar_type = TREE_TYPE (scalar);
   gfc_conv_descriptor_dtype_set (block, descr,
-                                gfc_get_dtype (type));
+                                gfc_get_dtype_rank_type (0, scalar_type));
   gfc_copy_coarray_desc_part (block, descr, scalar);
-  if (!POINTER_TYPE_P (TREE_TYPE (scalar)))
+  if (!POINTER_TYPE_P (scalar_type))
     scalar = gfc_build_addr_expr (NULL_TREE, scalar);
   if (cond_presence)
     scalar = build3_loc (input_location, COND_EXPR,
@@ -1052,11 +1050,10 @@ gfc_set_descriptor_from_scalar (stmtblock_t *block, 
tree descr, tree scalar)
 
 void
 gfc_set_descriptor_from_scalar_class (stmtblock_t *block, tree descr,
-                                     tree scalar, gfc_expr *scalar_expr)
+                                     tree scalar)
 {
   tree tmp = gfc_class_data_get (scalar);
-  gfc_set_descriptor_from_scalar (block, descr, tmp, scalar_expr, NULL_TREE,
-                                 NULL_TREE);
+  gfc_set_descriptor_from_scalar (block, descr, tmp, NULL_TREE, NULL_TREE);
 }
 
 
diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h
index 2cc0c7f13eaa..469026b3dd7a 100644
--- a/gcc/fortran/trans-descriptor.h
+++ b/gcc/fortran/trans-descriptor.h
@@ -85,9 +85,8 @@ void gfc_grow_array (stmtblock_t *, tree, tree);
 
 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_class (stmtblock_t *, tree, tree);
 void gfc_set_descriptor_from_scalar (stmtblock_t *, tree, tree);
-void gfc_set_descriptor_from_scalar (stmtblock_t *, tree, tree, gfc_expr *,
-                                    tree, tree);
+void gfc_set_descriptor_from_scalar (stmtblock_t *, tree, tree, tree, tree);
 
 #endif /* GFC_TRANS_DESCRIPTOR_H */
diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index f0dd56119bde..466303cb2d94 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -896,7 +896,7 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e, 
gfc_symbol *fsym,
          /* Scalar to an assumed-rank array.  */
          if (fsym->ts.u.derived->components->as)
            gfc_set_descriptor_from_scalar (&parmse->pre, ctree, parmse->expr,
-                                           e, cond_optional, caf_token);
+                                           cond_optional, caf_token);
           else
            {
              tmp = fold_convert (TREE_TYPE (ctree), parmse->expr);
@@ -1324,7 +1324,7 @@ gfc_conv_class_to_class (gfc_se *parmse, gfc_expr *e, 
gfc_typespec class_ts,
       && e->rank != class_ts.u.derived->components->as->rank)
     {
       if (e->rank == 0)
-       gfc_set_descriptor_from_scalar_class (&block, ctree, parmse->expr, e);
+       gfc_set_descriptor_from_scalar_class (&block, ctree, parmse->expr);
       else
        gfc_class_array_data_assign (&block, ctree, parmse->expr, false);
     }

Reply via email to