aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGAtomic.cpp
AgeCommit message (Collapse)Author
2013-11-08Cherrypick upstream r183033: Add support for optimized (non-generic) atomic ↵JF Bastien
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
2013-04-16Standardize accesses to the TargetInfo in IR-gen.John McCall
Patch by Stephen Lin! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179638 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-14Removed #if 0 code that doesn't compiled if uncommented.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179495 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-07Promote atomic type sizes up to a power of two, capped byJohn McCall
MaxAtomicPromoteWidth. Fix a ton of terrible bugs with _Atomic types and (non-intrinsic-mediated) loads and stores thereto. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176658 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-07Move the atomics code into its own file.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176657 91177308-0d34-0410-b5e6-96231b3b80d8