https://gcc.gnu.org/g:391a7e06973c22f02d62cd38f7b800bfbba67e1d

commit 391a7e06973c22f02d62cd38f7b800bfbba67e1d
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 536b46fcfef6..946f6bbce3ab 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -10427,9 +10427,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