/* { dg-do run } */ extern void abort (void); struct X { int *p; int *q; }; void __attribute__((noinline, noclone)) foo (struct X x) { *x.q = 0; } volatile int what; struct X y; int main() { int i, j; struct X x, *p; x.p = &i; x.q = &j; if (what) p = &y; else p = &x; j = 1; foo (*p); if (j != 0) abort (); return 0; }