https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105012
--- Comment #23 from anlauf at gcc dot gnu.org --- (In reply to Mikael Morin from comment #21) > (In reply to anlauf from comment #18) > > Tentative patch, regtests cleanly but otherwise untested: > > > > diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc > > index 850007fd2e1..0a1520e95ba 100644 > > --- a/gcc/fortran/trans-expr.cc > > +++ b/gcc/fortran/trans-expr.cc > > @@ -6503,8 +6503,19 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * > > sym, > > else > > { > > bool add_clobber; > > - add_clobber = fsym && fsym->attr.intent == INTENT_OUT > > - && !fsym->attr.allocatable && !fsym->attr.pointer > > + gfc_symbol *dsym = fsym; > > + gfc_dummy_arg *dummy; > > + > > + /* Use associated dummy as fallback for formal > > + argument if there is no explicit interface. */ > > (...) > > Note that if there is no explicit interface, I expect associated_dummy to be > NULL, and as a result dsym and fsym to always actually be the same thing. No, they're not, when the procedures are in the same file. At least that's what gdb tells me...