[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 08:10:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695
--- Comment #14 from rguenther at suse dot de <rguenther at suse dot de> 2012-08-23 08:10:15 UTC ---
On Thu, 23 Aug 2012, stevenb.gcc at gmail dot com wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53695
>
> --- Comment #12 from stevenb.gcc at gmail dot com <stevenb.gcc at gmail dot com> 2012-08-23 07:56:13 UTC ---
> > The patch is of couse a "big hammer" because it has a cost, but IMHO
> > it still makes sense.
>
> I'm not convinced. GCC has always detected this kind of loop (even the
> old non-cfg loop code recognizes this kind of loop) and it has never
> caused any problems before your patch to keep the loop structure
> up-to-date. To me, this means that the fix should be in the loop
> updating, not in abandoning a decades-old behavior of the compiler.
It's inconsistent in that it considers
<header>
| ^
(ab) |
v |
latch
a loop but not
<header>
| ^
| (ab)
v |
latch
and tracer "rotates" this loop by swapping dominance relationship
between header and latch but not makes the non-loop magically a loop.
My patch makes both not a loop.
More information about the Gcc-bugs
mailing list