http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57793
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|ice-on-valid-code |ice-on-invalid-code CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Reduced testcase: struct A { bool a : 1; bool b : 1; }; struct B { unsigned char c[0x40000000]; unsigned char d[0x40000ff0]; A e; void *foo () { if (e.a) return (void *) 0; e.b = true; return c; } }; void bar (B *p) { p->foo (); } This is of course invalid for 32-bit arches, you can't have an aggregate larger than half of the address space, so this PR is just about missing diagnostics for it. If the single field is 0x80000000U bytes or larger, gcc already diagnoses it.