https://gcc.gnu.org/g:b81d8a44041613ed773237eaf1e7ca6619a204c6
commit b81d8a44041613ed773237eaf1e7ca6619a204c6 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Thu Aug 7 14:05:20 2025 +0200 Refactoring gfc_get_scalar_to_descriptor_type Correction gfc_get_scalar_to_descriptor_type Correction gfc_get_scalar_to_descriptor_type Diff: --- gcc/fortran/trans-expr.cc | 8 ++++---- gcc/fortran/trans-types.cc | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index b5bb5a3341bd..50f13665777a 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -96,7 +96,7 @@ gfc_conv_scalar_null_to_descriptor (gfc_se *se, gfc_symbol *sym, tree scalar) { symbol_attribute attr = sym->attr; - tree type = gfc_get_scalar_to_descriptor_type (scalar, attr); + tree type = gfc_get_scalar_to_descriptor_type (TREE_TYPE (scalar), attr); tree desc = gfc_create_var (type, "desc"); DECL_ARTIFICIAL (desc) = 1; @@ -146,7 +146,7 @@ gfc_conv_scalar_to_descriptor (gfc_se *se, tree scalar, symbol_attribute attr) { tree desc, type, etype; - type = gfc_get_scalar_to_descriptor_type (scalar, attr); + type = gfc_get_scalar_to_descriptor_type (TREE_TYPE (scalar), attr); etype = TREE_TYPE (scalar); desc = gfc_create_var (type, "desc"); DECL_ARTIFICIAL (desc) = 1; @@ -973,7 +973,7 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym, if (fsym->ts.u.derived->components->as) { tree type; - type = gfc_get_scalar_to_descriptor_type (parmse->expr, + type = gfc_get_scalar_to_descriptor_type (TREE_TYPE (parmse->expr), gfc_expr_attr (e)); gfc_conv_descriptor_dtype_set (&parmse->pre, ctree, gfc_get_dtype (type)); @@ -1382,7 +1382,7 @@ gfc_conv_class_to_class (gfc_se *parmse, gfc_expr *e, gfc_typespec class_ts, { if (e->rank == 0) { - tree type = gfc_get_scalar_to_descriptor_type (parmse->expr, + tree type = gfc_get_scalar_to_descriptor_type (TREE_TYPE (parmse->expr), gfc_expr_attr (e)); gfc_conv_descriptor_dtype_set (&block, ctree, gfc_get_dtype (type)); diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc index 0c73e276482e..9d4329d97dec 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -2289,7 +2289,7 @@ gfc_get_array_type_bounds (tree etype, int dimen, int codimen, tree * lbound, arrays. */ tree -gfc_get_scalar_to_descriptor_type (tree scalar, symbol_attribute attr) +gfc_get_scalar_to_descriptor_type (tree scalar_type, symbol_attribute attr) { enum gfc_array_kind akind; @@ -2300,9 +2300,9 @@ gfc_get_scalar_to_descriptor_type (tree scalar, symbol_attribute attr) else akind = GFC_ARRAY_ASSUMED_SHAPE_CONT; - if (POINTER_TYPE_P (TREE_TYPE (scalar))) - scalar = TREE_TYPE (scalar); - return gfc_get_array_type_bounds (TREE_TYPE (scalar), 0, 0, NULL, NULL, 1, + if (POINTER_TYPE_P (scalar_type)) + scalar_type = TREE_TYPE (scalar_type); + return gfc_get_array_type_bounds (scalar_type, 0, 0, NULL, NULL, 1, akind, !(attr.pointer || attr.target)); }