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;