https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66194
--- Comment #8 from Evgeniy Dushistov <dushistov at mail dot ru> --- (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"? x86/amd64 allow misaligned memory access, ABI also allow this: the AMD64 architecture in general does not require all data accesses to be properly aligned The only exceptions are that __m128 and __m256 must always be aligned properly, So is it "gcc only" requirements for x86/amd64, that things like char buf[8] __attribute__ ((aligned (8))); int *p = &buf[3]; "p" is not correctly aligned?