http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695

--- Comment #18 from rguenther at suse dot de <rguenther at suse dot de> 
2012-08-23 09:22:54 UTC ---
On Thu, 23 Aug 2012, rguenther at suse dot de wrote:

> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695
> 
> --- Comment #17 from rguenther at suse dot de <rguenther at suse dot de> 
> 2012-08-23 09:19:04 UTC ---
> On Thu, 23 Aug 2012, steven at gcc dot gnu.org wrote:
> 
> > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695
> > 
> > --- Comment #16 from Steven Bosscher <steven at gcc dot gnu.org> 2012-08-23 
> > 08:53:04 UTC ---
> > (In reply to comment #15)
> > > Makes me wonder why the loop isn't recognized in the original test case...
> > 
> > Ah, maybe because bb3 has an abnormal predecessor and is therefore ignored 
> > as a
> > potential loop header?
> > 
> >       /* If we have an abnormal predecessor, do not consider the
> >          loop (not worth the problems).  */
> >       if (bb_has_abnormal_pred (header))
> >         continue;
> > 
> > Which brings things back to my question why this kind of loop header is
> > rejected! :-)
> 
> Because gimple_split_edge doesn't like to split abnormal edges,
> called via force_single_succ_latches ().  So we do definitely
> not allow abnormal latch -> header edges.  Still abnormal loop entries
> should be fine.  So,

But we can't create pre-headers then, too.  So optimizers that want
pre-headers would be confused (well, or ICE).  Why can we not split 
abnormal edges?

Reply via email to