[Bug middle-end/53695] [4.8 Regression] ICE: in dfs_enumerate_from, at cfganal.c:1221 with -O2 -ftracer and labels/gotos

rguenther at suse dot de gcc-bugzilla@gcc.gnu.org
Thu Aug 23 09:23:00 GMT 2012


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?



More information about the Gcc-bugs mailing list