https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125391

--- Comment #6 from Paul Thomas <pault at gcc dot gnu.org> ---
(In reply to Mikael Morin from comment #5)
> (In reply to Paul Thomas from comment #4)
> > @Mikael, please take a look at this.
> > 
> Mine again, it seems. Taking.

This does the trick and regression tests OK:

diff --git a/gcc/fortran/trans.cc b/gcc/fortran/trans.cc
index 1d7006a6963..c366d7f4dbf 100644
--- a/gcc/fortran/trans.cc
+++ b/gcc/fortran/trans.cc
@@ -1570,7 +1570,10 @@ gfc_assignment_finalizer_call (gfc_se *lse, gfc_expr
*expr1, bool init_flag)
          gfc_init_se (&se, NULL);
          if (expr1->rank)
            {
-             gfc_conv_expr_descriptor (&se, expr1);
+             /* Avoid calling trans-array.cc(set_factored_descriptor_value) by
+                not using gfc_conv_expr_descriptor.  */
+             se.descriptor_only = 1;
+             gfc_conv_expr (&se, expr1);
              ptr = gfc_conv_descriptor_data_get (se.expr);
            }
          else

Cheers

Paul

Reply via email to