| /* PR debug/61923 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fcompare-debug" } */ |
| |
| typedef struct |
| { |
| struct |
| { |
| struct |
| { |
| char head; |
| } tickets; |
| }; |
| } arch_spinlock_t; |
| struct ext4_map_blocks |
| { |
| int m_lblk; |
| int m_len; |
| int m_flags; |
| }; |
| int ext4_da_map_blocks_ei_0; |
| void fn2 (int, int); |
| void fn1 (int p1, struct ext4_map_blocks *p2) |
| { |
| int ret; |
| if (p2->m_flags) |
| { |
| ext4_da_map_blocks_ei_0++; |
| arch_spinlock_t *lock; |
| switch (sizeof *&lock->tickets.head) |
| case 1: |
| asm("" : "+m"(*&lock->tickets.head) : ""(0)); |
| __asm__(""); |
| ret = 0; |
| } |
| fn2 (p2->m_lblk, p2->m_len); |
| } |