clang-fix-cmpxchg8-detection-on-i386
authorLLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org>
Tue, 25 Apr 2017 13:10:10 +0000 (13:10 +0000)
committerSylvestre Ledru <sylvestre@debian.org>
Tue, 25 Apr 2017 13:10:10 +0000 (13:10 +0000)
commitcbce9a3fb5bc1d850a8553b161addec097a0451c
treef0f5f3bd2c58fa263dbaebd4b0f2feab14607009
parentd5cc5bb91b1d3bf13621f36fca2d4845ae8830ff
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