| /* PR middle-end/88968 */ | |
| /* { dg-do compile } */ | |
| struct __attribute__((packed)) S { | |
| unsigned int a : 16; | |
| unsigned int b : 1; | |
| } s; | |
| void | |
| f1 (void) | |
| { | |
| #pragma omp atomic | |
| ++s.a; | |
| } | |
| int | |
| f2 (void) | |
| { | |
| int r; | |
| #pragma omp atomic capture | |
| { | |
| r = s.a; | |
| s.a = 0; | |
| } | |
| return r; | |
| } | |
| int | |
| f3 (void) | |
| { | |
| int r; | |
| #pragma omp atomic capture | |
| { | |
| r = s.a; | |
| s.a = s.a + 32; | |
| } | |
| return r; | |
| } | |
| int | |
| f4 (void) | |
| { | |
| int r; | |
| #pragma omp atomic capture | |
| r = s.a = s.a + 32; | |
| return r; | |
| } |