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); }
