https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66194
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Evgeniy Dushistov from comment #8) > (In reply to Markus Trippelsdorf from comment #7) > > 6.3.2.3 p7: > > »A pointer to an object type may be converted to a pointer to a different > > object type. If the resulting pointer is not correctly aligned for the > > referenced type, the behavior is undefined.« > > Yep, but what does it mean "not correctly aligned"? each type has an alignment associated with it. In the case of AMD64, it is defined by the ABI. > x86/amd64 allow misaligned memory access, ABI also > allow this: ABI requirements are not C requirements always. This paragraph is talking about memory accesses but really it did not take into account other requirements of C correctly.