summaryrefslogtreecommitdiff
path: root/test/CodeGen/atomic_ops.c
Commit message (Collapse)AuthorAgeFilesLines
* [Sparc] XFAIL CodeGen/atomic_ops test.James Y Knight2015-08-071-1/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244370 91177308-0d34-0410-b5e6-96231b3b80d8
* Temporary XFAILs for HexagonRick Foos2015-03-041-0/+1
| | | | | | | | | | | | | | Summary: Temporary XFAIL's until patches done. Reviewers: echristo, adasgupt, colinl Reviewed By: colinl Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D8044 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231318 91177308-0d34-0410-b5e6-96231b3b80d8
* Update Clang tests to handle explicitly typed load changes in LLVM.David Blaikie2015-02-271-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230795 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix test/CodeGen/atomic_ops.c failure on clang-cmake-mips builder (and others).Daniel Sanders2015-02-181-1/+2
| | | | | | | | | | | Not all targets generate 'store atomic' instructions for '_Atomic(_Complex int)'. Some targets use the __atomic_store builtin instead. This commit makes the test accept either one. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229676 91177308-0d34-0410-b5e6-96231b3b80d8
* CodeGen: Relax a FileCheck line for SystemZDavid Majnemer2015-02-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229617 91177308-0d34-0410-b5e6-96231b3b80d8
* CodeGen: _Atomic(_Complex) shouldn't crashDavid Majnemer2015-02-141-0/+8
| | | | | | | We could be a little kinder if we did a compare-exchange loop instead of an atomic-load/store pair. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229212 91177308-0d34-0410-b5e6-96231b3b80d8
* CodeGen: Correctly convert atomic bool from i8 to i1David Majnemer2015-02-141-0/+10
| | | | | | | | | Bools are a little tricky, they are i8 in memory and must be coerced back to i1 before further operations can be performed on them. This fixes PR22577. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229204 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed test/CodeGen/atomic_ops.c for compatibility with hexagon targetAlexey Bataev2014-12-151-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224231 91177308-0d34-0410-b5e6-96231b3b80d8
* Improve C11 atomics support:David Chisnall2013-03-031-5/+0
| | | | | | | | | | | | | | | | | | | | | | - Generate atomicrmw operations in most of the cases when it's sensible to do so. - Don't crash in several common cases (and hopefully don't crash in more of them). - Add some better tests. We now generate significantly better code for things like: _Atomic(int) x; ... x++; On MIPS, this now generates a 4-instruction ll/sc loop, where previously it generated about 30 instructions in two nested loops. On x86-64, we generate a single lock incl, instead of a lock cmpxchgl loop (one instruction instead of ten). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176420 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix Sema and IRGen for atomic compound assignment so it has the right ↵Eli Friedman2012-06-161-3/+12
| | | | | | | | | | semantics when promotions are involved. (As far as I can tell, this only affects some edge cases.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158591 91177308-0d34-0410-b5e6-96231b3b80d8
* Some improvements to the handling of C11 atomic types:David Chisnall2012-01-161-0/+14
- Add atomic-to/from-nonatomic cast types - Emit atomic operations for arithmetic on atomic types - Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load - Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type. This is needed for the corresponding C11 stdatomic.h function. - Enables the relevant __has_feature() checks. The feature isn't 100% complete yet, but it's done enough that we want people testing it. Still to do: - Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg. - Add a signal fence builtin - Properly set the fenv state in atomic operations on floating point values - Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context) - Fix the many remaining corner cases git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148242 91177308-0d34-0410-b5e6-96231b3b80d8