[tree-ssa] Dce & infinite loops

Steven Bosscher stevenb@suse.de
Thu Mar 18 12:54:00 GMT 2004


On Thursday 18 March 2004 13:34, Zdenek Dvorak wrote:
> Hello,
>
> > > I may be wrong, but IIRC it is incorrect to remove infinite loops, as
> > > happens currently for example for the following code:
> > >
> > > int main(void)
> > > {
> > >   unsigned i;
> > >
> > >   for (i = 1; i != 0; i+=2);
> > >
> > >   return 0;
> > > }
> >
> > Removing an infinte loop is indeed wrong.  Hence this comment
> > in tree-ssa-dce.c:
> >
> >   /* Some blocks don't have an immediate post dominator.  This can happen
> >      for example with infinite loops.  Removing an infinite loop is an
> >      inappropriate transformation anyway...  */
> >
> > If we remove that infinite loop, you found a bug.
>
> the problem is that the loop in the example above has an exit (that is
> never taken); therefore the code in tree-ssa-dce.c you cite does not
> handle it.

I know, and I'm not sure how to deal with this.  It seems kind of silly
to need something like IV/loop analysis to decide whether or not some
code is dead.  What do other compilers do with your example?

Gr.
Steven





More information about the Gcc mailing list