[Bug fortran/105012] [12/13 Regression] wrf from SPECCPU2017 ICEs during LTO linking since r12-7692-g8db155ddf8cec9

mikael at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Aug 25 20:40:49 GMT 2022


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

--- Comment #26 from Mikael Morin <mikael at gcc dot gnu.org> ---
(In reply to anlauf from comment #25)
> (In reply to Mikael Morin from comment #24)
> > (In reply to anlauf from comment #22)
> > > 
> > > The remaining problem from PR41453#c8 is the following code in trans-expr.cc:
> > > 
> > > (gdb) l 9539,9548
> > > 9539          else if (add_clobber && expr->ref == NULL)
> > > 9540            {
> > > 9541              tree clobber;
> > > 9542              tree var;
> > > 9543              /* FIXME: This fails if var is passed by reference, see PR
> > > 9544                 41453.  */
> > > 9545              var = expr->symtree->n.sym->backend_decl;
> > > 9546              clobber = build_clobber (TREE_TYPE (var));
> > > 9547              gfc_add_modify (&se->pre, var, clobber);
> > > 9548            }
> > > 
> > > One needs to understand how to fix up 'var' here for the case at hand.
> > > 
> > I guess the obvious one (se->expr) doesn’t work?
> 
> Could you explain how to use it?  (I don't have the necessary vision.)

Upon return from gfc_conv_expr, se->expr holds the value of the expression.
So basically var = se->expr;
As we manage to pass __result_derfc as argument, then I expect se->expr to have
value __result_derfc at that point.


More information about the Gcc-bugs mailing list