https://gcc.gnu.org/g:7c51739c36bb30ea235c352ce6fc5619b9e355a1
commit 7c51739c36bb30ea235c352ce6fc5619b9e355a1 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Tue May 20 21:14:23 2025 +0200 Correction régression inline_sum_2 Diff: --- gcc/fortran/trans-array.cc | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 9a20f3a73583..a3d4c007d31e 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -2902,23 +2902,21 @@ gfc_add_loop_ss_code (gfc_loopinfo * loop, gfc_ss * ss, bool subscript, trans_array_constructor (ss, where); { gcc_assert (info->shape != nullptr || ss->dimen == 1); - tree type = gfc_typenode_for_spec (ss_info->expr->ts.type == BT_CLASS - ? &CLASS_DATA (ss_info->expr)->ts - : &ss_info->expr->ts); - if (ss_info->expr->ts.type == BT_CHARACTER + tree type = gfc_typenode_for_spec (expr->ts.type == BT_CLASS + ? &CLASS_DATA (expr)->ts + : &expr->ts); + if (expr->ts.type == BT_CHARACTER && gfc_is_constant_expr (ss_info->expr)) type = build_pointer_type (type); tree spacing = TYPE_SIZE_UNIT (type); if (spacing == NULL_TREE) - spacing = ss_info->expr->ts.u.cl->backend_decl; + spacing = expr->ts.u.cl->backend_decl; spacing = fold_convert_loc (input_location, gfc_array_index_type, spacing); - for (n = 0; n < ss->dimen; n++) + for (n = 0; n < expr->rank; n++) { - int dim = ss->dim[n]; - - info->spacing[dim] = spacing; - if (n < ss->dimen - 1) + info->spacing[n] = spacing; + if (n < expr->rank - 1) { tree extent = gfc_conv_mpz_to_tree_type (info->shape[n], gfc_array_index_type);