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);
 }

Reply via email to