1 extern void abort (void);
2 extern void exit (int);
3 typedef __UINTPTR_TYPE__ uintptr_t;
4 int n = 0;
f(void)5 int f (void) { return ++n; }
6 int
main(void)7 main (void)
8 {
9   int a = 0;
10   int *p;
11   uintptr_t b;
12   b = (uintptr_t)(p = &(int []){0, f(), 2}[1]);
13   if (*p != 1 || *(int *)b != 1 || n != 1)
14     abort ();
15   exit (0);
16 }
17