1 struct lock_chain {
2   unsigned int irq_context: 2,
3     depth: 6,
4     base: 24;
5 };
6 
7 __attribute__((noinline, noclone))
foo(struct lock_chain * chain)8 struct lock_chain * foo (struct lock_chain *chain)
9 {
10   int i;
11   for (i = 0; i < 100; i++)
12     {
13       chain[i+1].base = chain[i].base;
14     }
15   return chain;
16 }
17 
18 struct lock_chain1 {
19   char x;
20   unsigned short base;
21 } __attribute__((packed));
22 
23 __attribute__((noinline, noclone))
bar(struct lock_chain1 * chain)24 struct lock_chain1 * bar (struct lock_chain1 *chain)
25 {
26   int i;
27   for (i = 0; i < 100; i++)
28     {
29       chain[i+1].base = chain[i].base;
30     }
31   return chain;
32 }
33 
34 struct lock_chain test [101];
35 struct lock_chain1 test1 [101];
36 
37 int
main()38 main ()
39 {
40   foo (test);
41   bar (test1);
42   return 0;
43 }
44