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