/* { dg-do run } */ | |
/* { dg-options -O2 } */ | |
void abort (void); | |
void g(int); | |
void f(int l) | |
{ | |
unsigned i; | |
for (i = 0; i < l; i++) | |
{ | |
int y = i; | |
/* VRP was wrongfully computing z's range to be [0, 0] instead | |
of [-INF, 0]. */ | |
int z = y*-32; | |
g(z); | |
} | |
} | |
void g(int i) | |
{ | |
static int x = 0; | |
if (i == 0) | |
x ++; | |
if (x > 1) | |
abort (); | |
} | |
int main(void) | |
{ | |
f(3); | |
return 0; | |
} |