diff options
| author | Michal Gorny <mgorny@gentoo.org> | 2017-01-09 20:54:20 +0000 |
|---|---|---|
| committer | Michal Gorny <mgorny@gentoo.org> | 2017-01-09 20:54:20 +0000 |
| commit | dc155744c82fc7071bc14296a1e505876152bb3f (patch) | |
| tree | ffd359c15161915cc89fe9ae4c6bcfb78c805240 /llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp | |
| parent | 082fa545cc8de9a299686a383b181fa02fd98dc6 (diff) | |
| download | bcm5719-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

