https://gcc.gnu.org/g:7c185a3928ef9df1178e6dcf3a2a0e68403b146f

commit 7c185a3928ef9df1178e6dcf3a2a0e68403b146f
Author: Mikael Morin <[email protected]>
Date:   Fri Oct 17 14:30:54 2025 +0200

    Correction régression associate_47.f90

Diff:
---
 gcc/fortran/trans-array.cc | 11 ++++++++---
 gcc/fortran/trans-types.cc |  3 ---
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 40ba659f9701..edef90c61d7f 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -11088,14 +11088,19 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo 
*loop,
              tmp = tmpse.expr;
              expr2->ts.u.cl->backend_decl = gfc_evaluate_now (tmp, &fblock);
            }
-         tmp = fold_convert (TREE_TYPE (expr1->ts.u.cl->backend_decl), tmp);
        }
 
       if (expr1->ts.u.cl->backend_decl
          && VAR_P (expr1->ts.u.cl->backend_decl))
-       gfc_add_modify (&fblock, expr1->ts.u.cl->backend_decl, tmp);
+       {
+         tmp = fold_convert (TREE_TYPE (expr1->ts.u.cl->backend_decl), tmp);
+         gfc_add_modify (&fblock, expr1->ts.u.cl->backend_decl, tmp);
+       }
       else
-       gfc_add_modify (&fblock, lss->info->string_length, tmp);
+       {
+         tmp = fold_convert (TREE_TYPE (lss->info->string_length), tmp);
+         gfc_add_modify (&fblock, lss->info->string_length, tmp);
+       }
 
       if (expr1->ts.kind > 1)
        tmp = fold_build2_loc (input_location, MULT_EXPR,
diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc
index 9e8f2701b24f..a5c2747e9254 100644
--- a/gcc/fortran/trans-types.cc
+++ b/gcc/fortran/trans-types.cc
@@ -3055,9 +3055,6 @@ gfc_get_derived_type (gfc_symbol * derived, int codimen)
              gfc_conv_const_charlen (c->ts.u.cl);
              gcc_assert (c->ts.u.cl->backend_decl);
            }
-         else if (c->ts.type == BT_CHARACTER)
-           c->ts.u.cl->backend_decl
-                       = build_int_cst (gfc_charlen_type_node, 0);
 
          field_type = gfc_typenode_for_spec (&c->ts, codimen);
        }

Reply via email to