1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
static void *self(void *p){ return p; } int f() { struct { int i; } s, *sp; int *ip = &s.i; s.i = 1; sp = self(&s); *ip = 0; return sp->i+1; } main() { if (f () != 1) abort (); else exit (0); }