clang-fix-cmpxchg8-detection-on-i386
authorLLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org>
Fri, 22 Dec 2017 10:17:30 +0000 (10:17 +0000)
committerSylvestre Ledru <sylvestre@debian.org>
Fri, 22 Dec 2017 10:17:30 +0000 (10:17 +0000)
commit42b42489f92e98d0a58495dfb992073d99729a8b
treee60d8e2dc914d31d7f08922d3c269f6feb8766f9
parent640e9eb33f7ffbe8c3aa49edbe66628375f142f7
clang-fix-cmpxchg8-detection-on-i386

libcxx atomic tests for old i386 fail with wrong Atomic inline width.
cmpxchg8b instruction is required for 8 byte atomics that clang was
assuming.

Too bad _GCC_ATOMIC_LLONG_LOCK_FREE 2 isn't supported even with this change
because llvm doesn't support unaligned atomic compare and exchange operation.
Fallback calls to libatomic.so should handle long long lock free but clang
can't tell program if libatomic is always lock free.

Related bug: https://llvm.org/bugs/show_bug.cgi?id=19355

Gbp-Pq: Name clang-fix-cmpxchg8-detection-on-i386.patch
clang/lib/Basic/Targets.cpp
clang/test/Sema/atomic-ops.c