https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79671
--- Comment #28 from Richard Biener <rguenth at gcc dot gnu.org> --- To quote the only eventually relevant part(s) of 3.10/10: - an aggregate or union type that includes one of the aforementioned types among its elements or non-static data members (...) ... - a char or unsigned char type note the order. For union U { char c[4]; float f; } the stored value of type 'int' is not accessed through any of those when accessing it as U.