This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: cfg merge part 17 - loop datastructure updates
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: Richard Henderson <rth at redhat dot com>, gcc-patches at gcc dot gnu dot org,gcc-pdo at atrey dot karlin dot mff dot cuni dot cz, m dot hayes at elec dot canterbury dot ac dot nz
- Date: Sat, 1 Jun 2002 20:25:46 +0200
- Subject: Re: cfg merge part 17 - loop datastructure updates
- References: <20020513130251.GJ17596@atrey.karlin.mff.cuni.cz> <20020530130603.A5362@redhat.com> <20020531094721.GG1108@atrey.karlin.mff.cuni.cz> <20020531184056.GA2521@atrey.karlin.mff.cuni.cz> <20020531163939.A6183@redhat.com> <20020601181238.GA4030@atrey.karlin.mff.cuni.cz> <20020601182039.GP29168@atrey.karlin.mff.cuni.cz>
> > Hello.
> >
> > > > Here is the patch (also updated after bb renumbering removal).
> > >
> > > Thanks. Nearly ok.
> > >
> > > > + /* We could not redirect edges freely here. On the other hand,
> > > > + we know that no abnormal edge enters this block, so we can simply
> > > > + split the edge from entry block. */
> > >
> > > Actually, it is possible for the first block to be the target
> > > of an abnormal edge. There could be a computed jump to a label
> > > at the beginning of the function. But certainly that's not
> > > worth handling beyond not setting the header bit if we find one.
> > >
> > > Ok with that change.
> >
> > Actually it is not possible -- as otherwise this block would not be
> > taken as loop header.
>
> I think it can be taken in case it is reached by abnormal edge outside
> the loop. (so the loopback edge is normal).
No it cannot -- all edges entering possible header are tested (abnormal
edges restrict class of manipulations we can do
with loops, and I don't think such loops are common enough to
bother with them).
Zdenek