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

--- Comment #12 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-27 
22:20:13 UTC ---
(In reply to comment #11)
> (In reply to comment #9)
> 
> > 
> > Testcase:
> > 
> > volatile int j;
> > int __attribute__((noinline))
> > foo(int n)
> > {
> >   int i = 0, npairs;
> >   npairs = n - (- __INT_MAX__ - 1);
> >   if (npairs > 0)
> >     {
> >       do
> >         {
> >           ++j;
> >           i = i + 1;
> >         }
> >       while (i < npairs);
> >     }
> >   return 0;
> > }
> > extern void abort (void);
> > int main()
> > {
> >   j = 0;
> >   foo (- __INT_MAX__ - 1 + 5);
> >   if (j != 5)
> >     abort ();
> >   return 0;
> > }
> > 
> > is optimized to an endless loop by the first VRP pass.
> 
> It is caused by revision 163724:
> 
> http://gcc.gnu.org/ml/gcc-cvs/2010-09/msg00015.html

It surely has exposed it - before that patch VRP didn't use number of
iteration analysis.  Wheter that was correct at any point remains an
open question.

Reply via email to