This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] crash in coalesce_abnormal_edges, merge from mainline?
On Wed, 10 Sep 2003, Daniel Berlin wrote:
>
>
> On Wed, 10 Sep 2003, Daniel Berlin wrote:
>
> >
> >
> > On Wed, 10 Sep 2003 law@redhat.com wrote:
> >
> > > In message <1063211660.30914.18.camel@p4>, Andrew MacLeod writes:
> > > >On Wed, 2003-09-10 at 12:30, Andrew MacLeod wrote:
> > > >> On Wed, 2003-09-10 at 11:32, Daniel Berlin wrote:
> > > >
> > > >> Looking at each place where may_propagate_copy() is called, in virtually
> > > >> every instance that matters, we are processing the arguments of a PHI,
> > > "virtually every instance" is not good enough. We need to know for any
> > > arbitrary copy if one of its arguments is referenced in an abnormal PHI.
> > >
> > > >> which means have access to the edge that arguement comes across right
> > > >> there on the spot... so we could just check the flag on the edge and not
> > > >> do the copy propagate based on that.. Then we dont have this auxillary
> > > >> bit hanging around.
> > > No, you really need to set the bit -- you can't assume that you're only
> > > going to query this information at PHI nodes.
> > >
> > > What I want to know is why the code which sets this bit is not working
> > > in this case -- when we initialize a PHI argument (add_phi_arg) we query
> > > the edge flags and set SSA_NAME_OCCURS_IN_ABNORMAL_PHI appropriately.
> >
> > Right.
> > This is what i'm trying to figure out. we don't have any abnormal edges
> > that we add phi arguments to (IE when we call add_phi_arg, the edge we
> > pass to it is not flagged as abnormal at any point in this testcase)
>
> Whoops, this isn't true, spoke too soon.
>
> We do, and add_phi_arg does flag the name as occuring in an abnormal phi.
>
> That leaves the case of ephi minimization replacing across abnormal edges
> before they turned into phis.
Turning off ephi minimization didn't help.
PRE also definitely marks the phi name in question as abnormal through
add_phi_arg.
But even if you turn off every pass afterwards, we still get the abort.
So it looks like PRE should be avoiding that insertion completely.