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