mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Fix logic error in previous commit. The != case needs to become an or, not an
and. llvm-svn: 92419
This commit is contained in:
parent
3cc8fe073a
commit
cda0109ec5
@ -7324,9 +7324,13 @@ Instruction *InstCombiner::visitICmpInstWithInstAndIntCst(ICmpInst &ICI,
|
||||
Constant::getNullValue(P->getType()));
|
||||
Value *ICIQ = Builder->CreateICmp(ICI.getPredicate(), Q,
|
||||
Constant::getNullValue(Q->getType()));
|
||||
Instruction *And = BinaryOperator::CreateAnd(ICIP, ICIQ, "");
|
||||
And->takeName(&ICI);
|
||||
return And;
|
||||
Instruction *Op;
|
||||
if (ICI.getPredicate() == ICmpInst::ICMP_EQ)
|
||||
Op = BinaryOperator::CreateAnd(ICIP, ICIQ, "");
|
||||
else
|
||||
Op = BinaryOperator::CreateOr(ICIP, ICIQ, "");
|
||||
Op->takeName(&ICI);
|
||||
return Op;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -293,3 +293,17 @@ define i1 @test28(i32 %A, i32 %B) {
|
||||
; CHECK: icmp ne i32 {{.*}}, 0
|
||||
; CHECK: ret i1
|
||||
}
|
||||
|
||||
define i1 @test29(i32* %A, i32* %B) {
|
||||
%C1 = ptrtoint i32* %A to i32
|
||||
%C2 = ptrtoint i32* %B to i32
|
||||
%D = or i32 %C1, %C2
|
||||
%E = icmp ne i32 %D, 0
|
||||
ret i1 %E
|
||||
; CHECK: @test29
|
||||
; CHECK: icmp ne i32* %A, null
|
||||
; CHECK: icmp ne i32* %B, null
|
||||
; CHECK: or i1
|
||||
; CHECK: ret i1
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user