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

Reply via email to