https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101466

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to cqwrteur from comment #6)
> (In reply to Andrew Pinski from comment #4)
> > Reduced testcase:
> > extern void g() __attribute__((noreturn));
> > 
> > void square(int t, int *tt)
> > {
> >     if (t == 0)  g();
> >     tt[0] = 0;
> >     if (t == 1)  g();
> >     tt[1] = 0;
> >     if (t == 2)  g();
> >     tt[2] = 0;
> >     if (t == 3)   g();
> >     tt[3] = 0;
> >     if (t == 4)  g();
> >     tt[4] = 0;
> > }
> 
> I think the reduced testcase should be
> 
> extern void g() __attribute__((noreturn));
> 
> void square(unsigned t, int *tt)
> {
>     if (t<=0)  g();
>     tt[0] = 0;
>     if (t<=1)  g();
>     tt[1] = 0;
>     if (t<=2)  g();
>     tt[2] = 0;
>     if (t<=3)   g();
>     tt[3] = 0;
>     if (t<=4)  g();
>     tt[4] = 0;
> }

Yes obvious t should be unsigned.  But the <= will become == due to VRP
figuring that out :).  So it is either way.

Reply via email to