1 /* { dg-do run }  */
2 /* { dg-options -O2 }  */
3 
4 void abort (void);
5 void g(int);
f(int l)6 void f(int l)
7 {
8   unsigned i;
9   for (i = 0; i < l; i++)
10     {
11       int y = i;
12       /* VRP was wrongfully computing z's range to be [0, 0] instead
13 	 of [-INF, 0].  */
14       int z = y*-32;
15       g(z);
16     }
17 }
18 
g(int i)19 void g(int i)
20 {
21   static int x = 0;
22   if (i == 0)
23     x ++;
24   if (x > 1)
25     abort ();
26 }
27 
main(void)28 int main(void)
29 {
30   f(3);
31   return 0;
32 }
33