On Thu, 26 Sep 2013, Jakub Jelinek wrote: > On Thu, Sep 26, 2013 at 03:54:19PM +0200, Richard Biener wrote: > > > > After much thinking I settled on removing the restriction from > > forwprop that avoids propagating non-invariant addresses into > > loops. As forwprop is mainly seen as a way to canonicalize the IL > > and simplify it for further passes this seems like the correct thing > > to do. LIM and IVOPTs should undo any harm this causes, otherwise > > I'll find another way to fix the fallout. > > But, aren't some forwprop passes run after LIM and IVOPTs, so while > LIM and IVOPTs undo that harm, forwprop4 pass adds it there again?
LIM would move a memory reference, forwprop nowadays hopefully only propagates these beasts into dereferences. IVOPTs only works on memory references as well, exposing lowered address computation, thus a different kind of addresses. > I guess it is just fine to remove the restriction for forwprop{1,2,3}, > but for forwprop4 I'm not that sure. You are then hoping RTL optimizations > will undo the harm, but if they don't, ... ... then we find a solution to address this. No, I don't have my bets on RTL optimizers fixing this but instead on no fallout actually happening. Richard.