SCCP: update for cmpxchg returning { iN, i1 } now.

I accidentally missed this one since its use looked OK locally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210909 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Tim Northover 2014-06-13 14:54:09 +00:00
parent 636ae2b660
commit e1a9d504a3
2 changed files with 12 additions and 1 deletions

View File

@ -494,7 +494,9 @@ private:
void visitResumeInst (TerminatorInst &I) { /*returns void*/ }
void visitUnreachableInst(TerminatorInst &I) { /*returns void*/ }
void visitFenceInst (FenceInst &I) { /*returns void*/ }
void visitAtomicCmpXchgInst (AtomicCmpXchgInst &I) { markOverdefined(&I); }
void visitAtomicCmpXchgInst(AtomicCmpXchgInst &I) {
markAnythingOverdefined(&I);
}
void visitAtomicRMWInst (AtomicRMWInst &I) { markOverdefined(&I); }
void visitAllocaInst (Instruction &I) { markOverdefined(&I); }
void visitVAArgInst (Instruction &I) { markAnythingOverdefined(&I); }

View File

@ -0,0 +1,9 @@
; RUN: opt < %s -sccp -S | FileCheck %s
define i1 @test_cmpxchg(i32* %addr, i32 %desired, i32 %new) {
; CHECK-LABEL: @test_cmpxchg
; CHECK: cmpxchg i32* %addr, i32 %desired, i32 %new seq_cst seq_cst
%val = cmpxchg i32* %addr, i32 %desired, i32 %new seq_cst seq_cst
%res = extractvalue { i32, i1 } %val, 1
ret i1 %res
}