https://gcc.gnu.org/g:ac595ff23d46a664d60e76a640f7ca1dc2a99d11
commit ac595ff23d46a664d60e76a640f7ca1dc2a99d11 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Mon Feb 10 21:50:03 2025 +0100 Correction régression realloc on assign (associate_61, ...) Diff: --- gcc/fortran/trans-array.cc | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 5e9f487615d3..f0dadfbe58fc 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -13664,12 +13664,7 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, size2 = gfc_index_one_node; for (n = 0; n < expr2->rank; n++) { - tmp = fold_build2_loc (input_location, MINUS_EXPR, - gfc_array_index_type, - loop->to[n], loop->from[n]); - tmp = fold_build2_loc (input_location, PLUS_EXPR, - gfc_array_index_type, - tmp, gfc_index_one_node); + tmp = gfc_conv_array_extent_dim (loop->from[n], loop->to[n], NULL); size2 = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type, tmp, size2); @@ -13697,12 +13692,7 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, for (n = 0; n < expr2->rank; n++) { - tmp = fold_build2_loc (input_location, MINUS_EXPR, - gfc_array_index_type, - loop->to[n], loop->from[n]); - tmp = fold_build2_loc (input_location, PLUS_EXPR, - gfc_array_index_type, - tmp, gfc_index_one_node); + tmp = gfc_conv_array_extent_dim (loop->from[n], loop->to[n], NULL); lbound = gfc_index_one_node; ubound = tmp; @@ -13750,7 +13740,8 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, gfc_conv_descriptor_offset_set (&fblock, desc, offset); if (linfo->saved_offset && VAR_P (linfo->saved_offset)) - gfc_add_modify (&fblock, linfo->saved_offset, tmp); + gfc_add_modify (&fblock, linfo->saved_offset, + gfc_conv_descriptor_offset_get (desc)); /* Now set the deltas for the lhs. */ for (n = 0; n < expr1->rank; n++)