This is the mail archive of the gcc@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: [tree-ssa] Dce & infinite loops


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.

Zdenek


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