/* { dg-require-effective-target int32plus } */ | |
/* PR tree-optimization/78170. | |
Check that sign-extended store to a bitfield | |
doesn't overwrite other fields. */ | |
int a, b, d; | |
struct S0 | |
{ | |
int f0; | |
int f1; | |
int f2; | |
int f3; | |
int f4; | |
int f5:15; | |
int f6:17; | |
int f7:2; | |
int f8:30; | |
} c; | |
void fn1 () | |
{ | |
d = b = 1; | |
for (; b; b = a) | |
{ | |
struct S0 e = { 0, 0, 0, 0, 0, 0, 1, 0, 1 }; | |
c = e; | |
c.f6 = -1; | |
} | |
} | |
int main () | |
{ | |
fn1 (); | |
if (c.f7 != 0) | |
__builtin_abort (); | |
return 0; | |
} |