/* { dg-do run } */ /* { dg-options "-O3" } */ /* { dg-add-options bind_pic_locally } */ struct S { int a, b, c; }; volatile int g; static void __attribute__ ((noinline, noclone)) bar (struct S **p) { g = 5; }; static void __attribute__ ((noinline)) foo (struct S *p) { int i = p->a; if (i != 1) __builtin_abort (); bar (&p); } int main (int argc, char *argv[]) { struct S s; s.a = 1; s.b = 64; s.c = 32; foo (&s); return 0; }