| /* PR middle-end/71408 */ | |
| /* { dg-do run } */ | |
| /* { dg-options "-Os" } */ | |
| #if __SIZEOF_INT__ >= 4 | |
| unsigned a, b; | |
| struct S0 | |
| { | |
| int f1:18; | |
| unsigned f3:4; | |
| }; | |
| #else | |
| __UINT32_TYPE__ a, b; | |
| struct S0 | |
| { | |
| __INT32_TYPE__ f1:18; | |
| unsigned f3:4; | |
| }; | |
| #endif | |
| void fn1 () | |
| { | |
| struct S0 c = { 7, 0 }; | |
| if (c.f1) | |
| c.f3 = 3; | |
| a = -~c.f3; | |
| c.f3 = ~(c.f1 && c.f1); | |
| c.f1 = c.f3 * (c.f1 - (c.f1 - a % c.f1)) + ~c.f3 * -a; | |
| b = ~(c.f1 & a); | |
| if (b >= 4294967295) | |
| __builtin_abort (); | |
| } | |
| int | |
| main () | |
| { | |
| fn1 (); | |
| return 0; | |
| } |