1 extern void abort (void);
2 extern void *memset (void *s, int c, __SIZE_TYPE__ n);
3 struct S { int i[16]; };
4 struct S *p;
5 void __attribute__((noinline,noclone))
foo(struct S * a,struct S * b)6 foo(struct S *a, struct S *b) { a->i[0] = -1; p = b; }
test(void)7 void test (void)
8 {
9   struct S a, b;
10   memset (&a.i[0], '\0', sizeof (a.i));
11   memset (&b.i[0], '\0', sizeof (b.i));
12   foo (&a, &b);
13   *p = a;
14   *p = b;
15   if (b.i[0] != -1)
16     abort ();
17 }
main()18 int main()
19 {
20   test();
21   return 0;
22 }
23