aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/ExternalASTSource.cpp
diff options
context:
space:
mode:
authorJF Bastien <jfb@chromium.org>2013-11-08 15:52:28 -0800
committerJF Bastien <jfb@chromium.org>2013-11-08 15:52:28 -0800
commita963b803407c9d1cac644cc425004e0ccd28fa45 (patch)
treeed37041d85555f254bb835ce3f027e3eb049b279 /lib/AST/ExternalASTSource.cpp
parent5b8e932d70fcf281e193aebfd0d3ac55d057f2da (diff)
Cherrypick upstream r183033: Add support for optimized (non-generic) atomic libcalls.
For integer types of sizes 1, 2, 4 and 8, libcompiler-rt (and libgcc) provide atomic functions that pass parameters by value and return results directly. libgcc and libcompiler-rt only provide optimized libcalls for __atomic_fetch_*, as generic libcalls on non-integer types would make little sense. This means that we can finally make __atomic_fetch_* work on architectures for which we don't provide these operations as builtins (e.g. ARM). This should fix the dreaded "cannot compile this atomic library call yet" error that would pop up once every while. These code generation issues are encountered because PNaCl doesn't inline some of the atomic instructions, whereas other targets do. This patch is just after the 3.3 branch and applies cleanly, but it doesn't fix all issues: there is still at least one with atomic operations on pointers which isn't as clean to fix as applying one patch, so I'll leave that one as-is for now. R=dschuff@chromium.org BUG= https://code.google.com/p/nativeclient/issues/detail?id=3623 TEST= ./pnacl/scripts/llvm-test.py --libcxx-tests Review URL: https://codereview.chromium.org/59793007
Diffstat (limited to 'lib/AST/ExternalASTSource.cpp')
0 files changed, 0 insertions, 0 deletions