| __extension__ typedef __UINT32_TYPE__ uint32_t; |
| |
| struct lock_chain { |
| uint32_t irq_context: 2, |
| depth: 6, |
| base: 24; |
| }; |
| |
| __attribute__((noinline, noclone)) |
| struct lock_chain * foo (struct lock_chain *chain) |
| { |
| int i; |
| for (i = 0; i < 100; i++) |
| { |
| chain[i+1].base = chain[i].base; |
| } |
| return chain; |
| } |
| |
| struct lock_chain1 { |
| char x; |
| unsigned short base; |
| } __attribute__((packed)); |
| |
| __attribute__((noinline, noclone)) |
| struct lock_chain1 * bar (struct lock_chain1 *chain) |
| { |
| int i; |
| for (i = 0; i < 100; i++) |
| { |
| chain[i+1].base = chain[i].base; |
| } |
| return chain; |
| } |
| |
| struct lock_chain test [101]; |
| struct lock_chain1 test1 [101]; |
| |
| int |
| main () |
| { |
| foo (test); |
| bar (test1); |
| return 0; |
| } |