1 // PR c++/79681
2 // { dg-do compile { target c++14 } }
3 // { dg-options "-O2" }
4
5 struct A
6 {
7 char i : 4;
8 char k : 1;
9 char l : 3;
10 };
11 struct B
12 {
13 char j : 4;
14 };
15 struct C
16 {
17 long long u;
18 A a[1];
19 B b[1];
20 };
21
22 constexpr bool
foo()23 foo ()
24 {
25 C c = { 0, { { 5, 0, 2 } }, { { 6 } } };
26 C d = { 0, { { 6, 0, 1 } }, { { 5 } } };
27 return c.a[0].i == d.a[0].i && c.b[0].j == d.b[0].j;
28 }
29
30 constexpr bool
bar()31 bar ()
32 {
33 C c = { 0, { { 5, 0, 2 } }, { { 6 } } };
34 C d = { 0, { { 6, 0, 1 } }, { { 5 } } };
35 return c.a[0].i == d.a[0].i && c.a[0].l == d.a[0].l;
36 }
37
38 static_assert (foo () == false, "");
39 static_assert (bar () == false, "");
40