https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115582
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|WAITING |RESOLVED --- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The cast to char* does nothing except getting a pointer. Violation of aliasing rules in c/c++ is all about what type is doing the access. In this case the accesses are via the two structs. Note the fields might have the same type and both can be accessed via int without any undefinedness, they cannot be accessed via the each other struct types.