diff options
| author | Tim Northover <tnorthover@apple.com> | 2014-03-11 10:49:03 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2014-03-11 10:49:03 +0000 |
| commit | 0622b3a67af7545fa634c7fa98407f570a01d7b0 (patch) | |
| tree | 4b8fdab5e79b312e4c076b88f09ee748dd957198 /clang/lib/CodeGen/CGAtomic.cpp | |
| parent | e94a518a22db4b21f4a4a9e34173a11e9dfc5fcc (diff) | |
| download | bcm5719-llvm-0622b3a67af7545fa634c7fa98407f570a01d7b0.tar.gz bcm5719-llvm-0622b3a67af7545fa634c7fa98407f570a01d7b0.zip | |
Update for IR: add a second AtomicOrdering to cmpxchg insts.
rdar://problem/15996804
llvm-svn: 203560
Diffstat (limited to 'clang/lib/CodeGen/CGAtomic.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGAtomic.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CGAtomic.cpp b/clang/lib/CodeGen/CGAtomic.cpp index 88655774044..b5a494e2879 100644 --- a/clang/lib/CodeGen/CGAtomic.cpp +++ b/clang/lib/CodeGen/CGAtomic.cpp @@ -201,13 +201,14 @@ EmitAtomicOp(CodeGenFunction &CGF, AtomicExpr *E, llvm::Value *Dest, case AtomicExpr::AO__atomic_compare_exchange_n: { // Note that cmpxchg only supports specifying one ordering and // doesn't support weak cmpxchg, at least at the moment. - llvm::LoadInst *Expected = CGF.Builder.CreateLoad(Val1); Expected->setAlignment(Align); llvm::LoadInst *Desired = CGF.Builder.CreateLoad(Val2); Desired->setAlignment(Align); - llvm::AtomicCmpXchgInst *Old = - CGF.Builder.CreateAtomicCmpXchg(Ptr, Expected, Desired, Order); + llvm::AtomicOrdering FailureOrder = + llvm::AtomicCmpXchgInst::getStrongestFailureOrdering(Order); + llvm::AtomicCmpXchgInst *Old = CGF.Builder.CreateAtomicCmpXchg( + Ptr, Expected, Desired, Order, FailureOrder); Old->setVolatile(E->isVolatile()); // Cmp holds the result of the compare-exchange operation: true on success, |

