summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/atomic_ops.c
Commit message (Collapse)AuthorAgeFilesLines
* CodeGen: set correct result for atomic compound expressionsTim Northover2019-11-071-0/+53
| | | | | | | | Atomic compound expressions try to use atomicrmw if possible, but this path doesn't set the Result variable, leaving it to crash in later code if anything ever tries to use the result of the expression. This fixes that issue by recalculating the new value based on the old one atomically loaded.
* [Sparc] XFAIL CodeGen/atomic_ops test.James Y Knight2015-08-071-1/+2
| | | | llvm-svn: 244370
* 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 llvm-svn: 231318
* Update Clang tests to handle explicitly typed load changes in LLVM.David Blaikie2015-02-271-1/+1
| | | | llvm-svn: 230795
* 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. llvm-svn: 229676
* CodeGen: Relax a FileCheck line for SystemZDavid Majnemer2015-02-181-1/+1
| | | | llvm-svn: 229617
* 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. llvm-svn: 229212
* 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. llvm-svn: 229204
* Fixed test/CodeGen/atomic_ops.c for compatibility with hexagon targetAlexey Bataev2014-12-151-3/+3
| | | | llvm-svn: 224231
* 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). llvm-svn: 176420
* 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.) llvm-svn: 158591
* 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 llvm-svn: 148242
OpenPOWER on IntegriCloud