1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3 
4 struct pack
5 {
6   int fine;
7   int victim;
8   int killer;
9 };
10 
11 int __attribute__ ((__noinline__, __noclone__))
bar(int a,int b,struct pack p)12 bar (int a, int b, struct pack p)
13 {
14   if (a != 20 || b != 30)
15     __builtin_abort ();
16   if (p.fine != 40 || p.victim != 50 || p.killer != 60)
17     __builtin_abort ();
18   return 0;
19 }
20 
21 int __attribute__ ((__noinline__, __noclone__))
foo(int arg1,int arg2,int arg3,struct pack p)22 foo (int arg1, int arg2, int arg3, struct pack p)
23 {
24   return bar (arg2, arg3, p);
25 }
26 
main(void)27 int main (void)
28 {
29   struct pack p = { 40, 50, 60 };
30 
31   (void) foo (10, 20, 30, p);
32   return 0;
33 }
34