https://gcc.gnu.org/g:9543da98f562b8bacc5428427e6a84a54a8bbc17
commit 9543da98f562b8bacc5428427e6a84a54a8bbc17 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 34c8210f66a4..ec3771717e1a 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -3639,6 +3639,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 ac8ebf821711..28fee25ff7e4 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -13745,7 +13745,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. */ @@ -14250,9 +14250,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); }