This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [lno] ICE in coalesce_abnormal_edges, at tree-outof-ssa.c:645
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: Andrew MacLeod <amacleod at redhat dot com>
- Cc: Richard Guenther <rguenth at tat dot physik dot uni-tuebingen dot de>,gcc mailing list <gcc at gcc dot gnu dot org>
- Date: Mon, 19 Apr 2004 00:58:49 +0200
- Subject: Re: [lno] ICE in coalesce_abnormal_edges, at tree-outof-ssa.c:645
- References: <1082125723.17747.871.camel@p4>
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