1 /* { dg-require-effective-target int32plus } */
2 
3 /* PR tree-optimization/78170.
4    Check that sign-extended store to a bitfield
5    doesn't overwrite other fields.  */
6 
7 int a, b, d;
8 
9 struct S0
10 {
11   int f0;
12   int f1;
13   int f2;
14   int f3;
15   int f4;
16   int f5:15;
17   int f6:17;
18   int f7:2;
19   int f8:30;
20 } c;
21 
fn1()22 void fn1 ()
23 {
24   d = b = 1;
25   for (; b; b = a)
26     {
27       struct S0 e = { 0, 0, 0, 0, 0, 0, 1, 0, 1 };
28       c = e;
29       c.f6 = -1;
30     }
31 }
32 
main()33 int main ()
34 {
35   fn1 ();
36   if (c.f7 != 0)
37     __builtin_abort ();
38   return 0;
39 }
40