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

commit 7b18f5d581790bac863a8bfa51f6213576d7e8e3
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Tue Apr 22 21:24:40 2025 +0200

    Correction régression dependency_56

Diff:
---
 gcc/fortran/trans-expr.cc | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index 73813b719c61..c93f1e445398 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -10404,9 +10404,13 @@ trans_class_vptr_len_assignment (stmtblock_t *block, 
gfc_expr * le,
            pre = &rse->pre;
 
          if (class_expr != NULL_TREE && UNLIMITED_POLY (re))
-             tmp = gfc_evaluate_now (TREE_OPERAND (rse->expr, 0), &rse->pre);
+           {
+             tmp = gfc_build_addr_expr (NULL_TREE, rse->expr);
+             tmp = gfc_evaluate_now (tmp, &rse->pre);
+             tmp = build_fold_indirect_ref_loc (input_location, tmp);
+           }
          else
-             tmp = gfc_evaluate_now (rse->expr, &rse->pre);
+           tmp = gfc_evaluate_now (rse->expr, &rse->pre);
 
          rse->expr = tmp;
        }

Reply via email to