1 struct X { int flag; int pos; };
foo(struct X * a,struct X * b)2 int foo(struct X *a, struct X *b)
3 {
4   while (1)
5     {
6       if (a->flag)
7 	break;
8       ({ struct X *tmp = a; a = b; b = tmp; });
9     }
10 
11   return a->pos + b->pos;
12 }
13