struct X { int i; }; int __attribute__((noinline)) foo (struct X *p, int *q, int a, int b) { struct X x, y; if (a) p = &x; if (b) q = &x.i; else q = &y.i; *q = 1; return p->i; } extern void abort (void); int main() { if (foo((void *)0, (void *)0, 1, 1) != 1) abort (); return 0; }