https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105969
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Overlapping elements is simply a consequence of the zero-sized-objects extension, I don't see anything invalid here to reject (though there might be undefined behavior at runtime when sprintf accesses bytes beyond the zero-sized object; even if char a[0][0][0] is treated like a flexible array member, it's not clear a flexible array member whose elements themselves have zero size can be validly used to access any bytes).