forked from OSchip/llvm-project
Simplify code. No functionality changes, name changes aside.
llvm-svn: 132896
This commit is contained in:
parent
820a947fe1
commit
35159c114c
|
@ -1087,19 +1087,14 @@ Instruction *InstCombiner::visitICmpInstWithInstAndIntCst(ICmpInst &ICI,
|
|||
// have its sign bit set or if it is an equality comparison.
|
||||
// Extending a relational comparison when we're checking the sign
|
||||
// bit would not work.
|
||||
if (Cast->hasOneUse() &&
|
||||
(ICI.isEquality() ||
|
||||
(AndCST->getValue().isNonNegative() && RHSV.isNonNegative()))) {
|
||||
uint32_t BitWidth =
|
||||
cast<IntegerType>(Cast->getOperand(0)->getType())->getBitWidth();
|
||||
APInt NewCST = AndCST->getValue().zext(BitWidth);
|
||||
APInt NewCI = RHSV.zext(BitWidth);
|
||||
Value *NewAnd =
|
||||
if (ICI.isEquality() ||
|
||||
(AndCST->getValue().isNonNegative() && RHSV.isNonNegative())) {
|
||||
Value *NewAnd =
|
||||
Builder->CreateAnd(Cast->getOperand(0),
|
||||
ConstantInt::get(ICI.getContext(), NewCST),
|
||||
LHSI->getName());
|
||||
ConstantExpr::getZExt(AndCST, Cast->getSrcTy()));
|
||||
NewAnd->takeName(LHSI);
|
||||
return new ICmpInst(ICI.getPredicate(), NewAnd,
|
||||
ConstantInt::get(ICI.getContext(), NewCI));
|
||||
ConstantExpr::getZExt(RHS, Cast->getSrcTy()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -265,8 +265,8 @@ define i1 @test31(i64 %A) {
|
|||
%C = and i32 %B, 42 ; <i32> [#uses=1]
|
||||
%D = icmp eq i32 %C, 10 ; <i1> [#uses=1]
|
||||
ret i1 %D
|
||||
; CHECK: %C1 = and i64 %A, 42
|
||||
; CHECK: %D = icmp eq i64 %C1, 10
|
||||
; CHECK: %C = and i64 %A, 42
|
||||
; CHECK: %D = icmp eq i64 %C, 10
|
||||
; CHECK: ret i1 %D
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue