This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cfg merge part 17 - loop datastructure updates


> > 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]