https://gcc.gnu.org/g:c65e4c60e637d78014c6169d48791c3435e55349
commit c65e4c60e637d78014c6169d48791c3435e55349 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 7089e4f171d1..36b1391a305b 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -3663,6 +3663,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 1d239384aaa7..72103cfd4e89 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -11476,7 +11476,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. */ @@ -11985,9 +11985,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); }