https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65146

--- Comment #6 from Peter Cordes <peter at cordes dot ca> ---
My test-case on godbolt: https://godbolt.org/g/MmLycw.  gcc8 snapshot still
only has 4B alignment

Fun fact: clang4.0 -m32 inlines lock cmpxchg8b for 8-byte atomic load/store. 
This is ironic, because it *does* align  _Atomic 64-bit objects to 8 bytes so
it could safely use SSE loads/stores.  It would work correctly if called from
gcc-compiled code that passed it a misaligned atomic_llong *.  But since gcc
and clang don't agree on i386 SysV struct layout for _Atomic 64-bit members, so
clang should really just start using movq for 64-bit atomic objects in 32-bit
mode.

Reply via email to