https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101061
--- Comment #6 from Alexander Grund <alexander.gr...@tu-dresden.de> --- Oh and for completeness: The same applies to the following union, doesn't it? I.e. given this: struct TF_TString_Raw { uint8_t raw[24]; }; struct TF_TString_Small { uint8_t size; char str[23]; }; struct TF_TString_Large { size_t size; size_t cap; char *ptr; }; union{ TF_TString_Raw raw; TF_TString_Small smll; TF_TString_Large large; } x; it is not allowed to access x.raw.raw[0] AND then x.large.size (not even a common initial subsequence) but also not x.raw.raw[0] AND then x.small.size (maybe a common sequence, not sure about the array, but not implemented in GCC)