https://gcc.gnu.org/g:f6cbd7564aed31f6b35903cbc7a7b9190929c35b
commit f6cbd7564aed31f6b35903cbc7a7b9190929c35b Author: Mikael Morin <mik...@gcc.gnu.org> Date: Tue Feb 18 15:07:23 2025 +0100 Correction régression array_function_6.f90 Diff: --- gcc/fortran/resolve.cc | 4 ++++ gcc/fortran/trans-array.cc | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 3d3f117216ca..266e2650b63d 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -3613,6 +3613,10 @@ resolve_function (gfc_expr *expr) gfc_warning (OPT_Wdeprecated_declarations, "Using function %qs at %L is deprecated", sym->name, &expr->where); + + if (!expr->value.function.isym) + gfc_expression_rank (expr); + return t; } diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index a82d20ff9293..c9a5a5e2ea64 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -13726,7 +13726,7 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, && !expr2->value.function.isym) expr2->ts.u.cl->backend_decl = rss->info->string_length; - gfc_init_block (&fblock); + gfc_start_block (&fblock); /* Since the lhs is allocatable, this must be a descriptor type. Get the data and array size. */ @@ -14231,9 +14231,14 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, tmp = build1_v (LABEL_EXPR, jump_label2); gfc_add_expr_to_block (&fblock, tmp); - update_reallocated_descriptor (&fblock, loop); + tree realloc_code = gfc_finish_block (&fblock); - return gfc_finish_block (&fblock); + stmtblock_t result_block; + gfc_init_block (&result_block); + gfc_add_expr_to_block (&result_block, realloc_code); + update_reallocated_descriptor (&result_block, loop); + + return gfc_finish_block (&result_block); }