[lno] ICE in coalesce_abnormal_edges, at tree-outof-ssa.c:645

Zdenek Dvorak rakdver@atrey.karlin.mff.cuni.cz
Sun Apr 18 23:56:00 GMT 2004


Hello,

> On Fri, 2004-04-16 at 09:57, Richard Guenther wrote:
> > With the tramp3d-v3.cpp testcase I get an ICE with todays lno branch if
> > compiling with -O2 -funroll-loops -ffast-math -march=athlon:
> > 
> >  Conflict pt_466 and pt_435 across an abnormal edge from BB17->BB19
> 
> > 
> > Maybe a merge from tree-ssa would help (ICE doesn't look lno related at
> > first look)
> > 
> 
> That typically means someone has extended the live range of a variable
> across an abnormal edge, causing a conflict between either 2 arguments
> of a PHI node or the result of the PHI and an argument.

right, I have obviously forgotten about this in the induction variable
optimizer.  I am testing the fix now.

> Because its an abnormal edge, there is nowhere to insert a copy to
> resolve the issue. 

Did someone try whether solving this by just coalescing as much as
possible and fixing up the remaining abnormal edges by inserting the
copies to temporary at the end of their source block and loads from the
temporary at their end harms the code?

It obviously might spoil the code if there were too many such stores
emited, but it seems to me that it might well turn that this is rare, in
which case it would be much nicer solution than the current one where we
have to check & update the SSA_NAME_OCCURS_IN_ABNORMAL_EDGE everywhere.

Zdenek



More information about the Gcc mailing list