1 /* { dg-do run } */ 2 3 extern void abort (void); 4 5 struct X { void *p; int res; } a[32]; 6 foo(unsigned i,unsigned n,void * q)7int foo (unsigned i, unsigned n, void *q) 8 { 9 if (i + 1 < n && q == a[i + 1].p) 10 { 11 do { 12 ++i; 13 } while (i < n && q == a[i].p); 14 --i; 15 return a[i].res; 16 } 17 else 18 return a[i].res; 19 } 20 main()21int main () 22 { 23 int x; 24 a[0].p = &x; 25 a[0].res = -1; 26 a[1].p = &x; 27 a[1].res = 1; 28 a[2].p = (void *)0; 29 a[2].res = 0; 30 if (foo (0, 3, &x) != 1) 31 abort (); 32 return 0; 33 } 34