summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
diff options
context:
space:
mode:
authorMichal Gorny <mgorny@gentoo.org>2017-01-09 20:54:20 +0000
committerMichal Gorny <mgorny@gentoo.org>2017-01-09 20:54:20 +0000
commitdc155744c82fc7071bc14296a1e505876152bb3f (patch)
treeffd359c15161915cc89fe9ae4c6bcfb78c805240 /llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
parent082fa545cc8de9a299686a383b181fa02fd98dc6 (diff)
downloadbcm5719-llvm-dc155744c82fc7071bc14296a1e505876152bb3f.tar.gz
bcm5719-llvm-dc155744c82fc7071bc14296a1e505876152bb3f.zip
[Frontend] Correct values of ATOMIC_*_LOCK_FREE to match builtin
Correct the logic used to set ATOMIC_*_LOCK_FREE preprocessor macros not to rely on the ABI alignment of types. Instead, just assume all those types are aligned correctly by default since clang uses safe alignment for _Atomic types even if the underlying types are aligned to a lower boundary by default. For example, the 'long long' and 'double' types on x86 are aligned to 32-bit boundary by default. However, '_Atomic long long' and '_Atomic double' are aligned to 64-bit boundary, therefore satisfying the requirements of lock-free atomic operations. This fixes PR #19355 by correcting the value of __GCC_ATOMIC_LLONG_LOCK_FREE on x86, and therefore also fixing the assumption made in libc++ tests. This also fixes PR #30581 by applying a consistent logic between the functions used to implement both interfaces. Differential Revision: https://reviews.llvm.org/D28213 llvm-svn: 291477
Diffstat (limited to 'llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud