https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102538
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Testcase for the wrong-code: struct X { union { char r8[8]; int r32[2]; }; }; struct Y { X v[1]; }; Y x = { { { .r32 = { 5, 6 } } } }; int main () { if (x.v[0].r32[0] != 5 || x.v[0].r32[1] != 6) __builtin_abort (); }