https://gcc.gnu.org/g:ad95e9c556ac0263535eb8a503bb6e8e6f64d882

commit ad95e9c556ac0263535eb8a503bb6e8e6f64d882
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Sun Jul 6 19:01:12 2025 +0200

    Revert déplacement déallocation

Diff:
---
 gcc/fortran/trans-expr.cc | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index 299acd3e3314..fa8e8e9d7e50 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -12939,7 +12939,6 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * 
expr2, bool init_flag,
       rhs_caf_attr = gfc_caf_attr (expr2, false, &rhs_refs_comp);
     }
 
-  tree reallocation = NULL_TREE;
   if (lss != gfc_ss_terminator)
     {
       /* The assignment needs scalarization.  */
@@ -13012,14 +13011,6 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * 
expr2, bool init_flag,
          ompws_flags |= OMPWS_SCALARIZER_WS | OMPWS_SCALARIZER_BODY;
        }
 
-      /* F2003: Allocate or reallocate lhs of allocatable array.  */
-      if (realloc_flag)
-       {
-         realloc_lhs_warning (expr1->ts.type, true, &expr1->where);
-         ompws_flags &= ~OMPWS_SCALARIZER_WS;
-         reallocation = gfc_alloc_allocatable_for_assignment (&loop, expr1, 
expr2);
-       }
-
       /* Start the scalarized loop body.  */
       gfc_start_scalarized_body (&loop, &body);
     }
@@ -13328,8 +13319,15 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * 
expr2, bool init_flag,
          gfc_add_expr_to_block (&body, tmp);
        }
 
-      if (reallocation != NULL_TREE)
-       gfc_add_expr_to_block (&loop.code[loop.dimen - 1], reallocation);
+      /* F2003: Allocate or reallocate lhs of allocatable array.  */
+      if (realloc_flag)
+       {
+         realloc_lhs_warning (expr1->ts.type, true, &expr1->where);
+         ompws_flags &= ~OMPWS_SCALARIZER_WS;
+         tmp = gfc_alloc_allocatable_for_assignment (&loop, expr1, expr2);
+         if (tmp != NULL_TREE)
+           gfc_add_expr_to_block (&loop.code[expr1->rank - 1], tmp);
+       }
 
       if (maybe_workshare)
        ompws_flags &= ~OMPWS_SCALARIZER_BODY;

Reply via email to