1 /* PR target/52129 */
2 
3 extern void abort (void);
4 struct S { void *p; unsigned int q; };
5 struct T { char a[64]; char b[64]; } t;
6 
7 __attribute__((noinline, noclone)) int
foo(void * x,struct S s,void * y,void * z)8 foo (void *x, struct S s, void *y, void *z)
9 {
10   if (x != &t.a[2] || s.p != &t.b[5] || s.q != 27 || y != &t.a[17] || z != &t.b[17])
11     abort ();
12   return 29;
13 }
14 
15 __attribute__((noinline, noclone)) int
bar(void * x,void * y,void * z,struct S s,int t,struct T * u)16 bar (void *x, void *y, void *z, struct S s, int t, struct T *u)
17 {
18   return foo (x, s, &u->a[t], &u->b[t]);
19 }
20 
21 int
main()22 main ()
23 {
24   struct S s = { &t.b[5], 27 };
25   if (bar (&t.a[2], (void *) 0, (void *) 0, s, 17, &t) != 29)
26     abort ();
27   return 0;
28 }
29