/* { dg-do run } */ | |
extern void abort (void); | |
struct X { void *p; int res; } a[32]; | |
int foo (unsigned i, unsigned n, void *q) | |
{ | |
if (i + 1 < n && q == a[i + 1].p) | |
{ | |
do { | |
++i; | |
} while (i < n && q == a[i].p); | |
--i; | |
return a[i].res; | |
} | |
else | |
return a[i].res; | |
} | |
int main () | |
{ | |
int x; | |
a[0].p = &x; | |
a[0].res = -1; | |
a[1].p = &x; | |
a[1].res = 1; | |
a[2].p = (void *)0; | |
a[2].res = 0; | |
if (foo (0, 3, &x) != 1) | |
abort (); | |
return 0; | |
} |