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