forked from OSchip/llvm-project
[Constants] Replace calls to ConstantInt::equalsInt(0)/equalsInt(1) with isZero and isOne. NFCI
llvm-svn: 307293
This commit is contained in:
parent
79ab643da8
commit
ca2c87653c
|
@ -137,7 +137,7 @@ PHINode *Loop::getCanonicalInductionVariable() const {
|
||||||
if (Inc->getOpcode() == Instruction::Add &&
|
if (Inc->getOpcode() == Instruction::Add &&
|
||||||
Inc->getOperand(0) == PN)
|
Inc->getOperand(0) == PN)
|
||||||
if (ConstantInt *CI = dyn_cast<ConstantInt>(Inc->getOperand(1)))
|
if (ConstantInt *CI = dyn_cast<ConstantInt>(Inc->getOperand(1)))
|
||||||
if (CI->equalsInt(1))
|
if (CI->isOne())
|
||||||
return PN;
|
return PN;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -2743,7 +2743,7 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImpl<const SCEV *> &Ops,
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we are left with a constant one being multiplied, strip it off.
|
// If we are left with a constant one being multiplied, strip it off.
|
||||||
if (cast<SCEVConstant>(Ops[0])->getValue()->equalsInt(1)) {
|
if (cast<SCEVConstant>(Ops[0])->getValue()->isOne()) {
|
||||||
Ops.erase(Ops.begin());
|
Ops.erase(Ops.begin());
|
||||||
--Idx;
|
--Idx;
|
||||||
} else if (cast<SCEVConstant>(Ops[0])->getValue()->isZero()) {
|
} else if (cast<SCEVConstant>(Ops[0])->getValue()->isZero()) {
|
||||||
|
@ -2939,7 +2939,7 @@ const SCEV *ScalarEvolution::getUDivExpr(const SCEV *LHS,
|
||||||
"SCEVUDivExpr operand types don't match!");
|
"SCEVUDivExpr operand types don't match!");
|
||||||
|
|
||||||
if (const SCEVConstant *RHSC = dyn_cast<SCEVConstant>(RHS)) {
|
if (const SCEVConstant *RHSC = dyn_cast<SCEVConstant>(RHS)) {
|
||||||
if (RHSC->getValue()->equalsInt(1))
|
if (RHSC->getValue()->isOne())
|
||||||
return LHS; // X udiv 1 --> x
|
return LHS; // X udiv 1 --> x
|
||||||
// If the denominator is zero, the result of the udiv is undefined. Don't
|
// If the denominator is zero, the result of the udiv is undefined. Don't
|
||||||
// try to analyze it, because the resolution chosen here may differ from
|
// try to analyze it, because the resolution chosen here may differ from
|
||||||
|
@ -7626,7 +7626,7 @@ ScalarEvolution::howFarToZero(const SCEV *V, const Loop *L, bool ControlsExit,
|
||||||
// to 0, it must be counting down to equal 0. Consequently, N = Start / -Step.
|
// to 0, it must be counting down to equal 0. Consequently, N = Start / -Step.
|
||||||
// We have not yet seen any such cases.
|
// We have not yet seen any such cases.
|
||||||
const SCEVConstant *StepC = dyn_cast<SCEVConstant>(Step);
|
const SCEVConstant *StepC = dyn_cast<SCEVConstant>(Step);
|
||||||
if (!StepC || StepC->getValue()->equalsInt(0))
|
if (!StepC || StepC->getValue()->isZero())
|
||||||
return getCouldNotCompute();
|
return getCouldNotCompute();
|
||||||
|
|
||||||
// For positive steps (counting up until unsigned overflow):
|
// For positive steps (counting up until unsigned overflow):
|
||||||
|
|
|
@ -1015,28 +1015,28 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode,
|
||||||
if (ConstantInt *CI2 = dyn_cast<ConstantInt>(C2)) {
|
if (ConstantInt *CI2 = dyn_cast<ConstantInt>(C2)) {
|
||||||
switch (Opcode) {
|
switch (Opcode) {
|
||||||
case Instruction::Add:
|
case Instruction::Add:
|
||||||
if (CI2->equalsInt(0)) return C1; // X + 0 == X
|
if (CI2->isZero()) return C1; // X + 0 == X
|
||||||
break;
|
break;
|
||||||
case Instruction::Sub:
|
case Instruction::Sub:
|
||||||
if (CI2->equalsInt(0)) return C1; // X - 0 == X
|
if (CI2->isZero()) return C1; // X - 0 == X
|
||||||
break;
|
break;
|
||||||
case Instruction::Mul:
|
case Instruction::Mul:
|
||||||
if (CI2->equalsInt(0)) return C2; // X * 0 == 0
|
if (CI2->isZero()) return C2; // X * 0 == 0
|
||||||
if (CI2->equalsInt(1))
|
if (CI2->isOne())
|
||||||
return C1; // X * 1 == X
|
return C1; // X * 1 == X
|
||||||
break;
|
break;
|
||||||
case Instruction::UDiv:
|
case Instruction::UDiv:
|
||||||
case Instruction::SDiv:
|
case Instruction::SDiv:
|
||||||
if (CI2->equalsInt(1))
|
if (CI2->isOne())
|
||||||
return C1; // X / 1 == X
|
return C1; // X / 1 == X
|
||||||
if (CI2->equalsInt(0))
|
if (CI2->isZero())
|
||||||
return UndefValue::get(CI2->getType()); // X / 0 == undef
|
return UndefValue::get(CI2->getType()); // X / 0 == undef
|
||||||
break;
|
break;
|
||||||
case Instruction::URem:
|
case Instruction::URem:
|
||||||
case Instruction::SRem:
|
case Instruction::SRem:
|
||||||
if (CI2->equalsInt(1))
|
if (CI2->isOne())
|
||||||
return Constant::getNullValue(CI2->getType()); // X % 1 == 0
|
return Constant::getNullValue(CI2->getType()); // X % 1 == 0
|
||||||
if (CI2->equalsInt(0))
|
if (CI2->isZero())
|
||||||
return UndefValue::get(CI2->getType()); // X % 0 == undef
|
return UndefValue::get(CI2->getType()); // X % 0 == undef
|
||||||
break;
|
break;
|
||||||
case Instruction::And:
|
case Instruction::And:
|
||||||
|
@ -1078,12 +1078,12 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Instruction::Or:
|
case Instruction::Or:
|
||||||
if (CI2->equalsInt(0)) return C1; // X | 0 == X
|
if (CI2->isZero()) return C1; // X | 0 == X
|
||||||
if (CI2->isMinusOne())
|
if (CI2->isMinusOne())
|
||||||
return C2; // X | -1 == -1
|
return C2; // X | -1 == -1
|
||||||
break;
|
break;
|
||||||
case Instruction::Xor:
|
case Instruction::Xor:
|
||||||
if (CI2->equalsInt(0)) return C1; // X ^ 0 == X
|
if (CI2->isZero()) return C1; // X ^ 0 == X
|
||||||
|
|
||||||
if (ConstantExpr *CE1 = dyn_cast<ConstantExpr>(C1)) {
|
if (ConstantExpr *CE1 = dyn_cast<ConstantExpr>(C1)) {
|
||||||
switch (CE1->getOpcode()) {
|
switch (CE1->getOpcode()) {
|
||||||
|
@ -1091,7 +1091,7 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode,
|
||||||
case Instruction::ICmp:
|
case Instruction::ICmp:
|
||||||
case Instruction::FCmp:
|
case Instruction::FCmp:
|
||||||
// cmp pred ^ true -> cmp !pred
|
// cmp pred ^ true -> cmp !pred
|
||||||
assert(CI2->equalsInt(1));
|
assert(CI2->isOne());
|
||||||
CmpInst::Predicate pred = (CmpInst::Predicate)CE1->getPredicate();
|
CmpInst::Predicate pred = (CmpInst::Predicate)CE1->getPredicate();
|
||||||
pred = CmpInst::getInversePredicate(pred);
|
pred = CmpInst::getInversePredicate(pred);
|
||||||
return ConstantExpr::getCompare(pred, CE1->getOperand(0),
|
return ConstantExpr::getCompare(pred, CE1->getOperand(0),
|
||||||
|
@ -1170,7 +1170,7 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode,
|
||||||
case Instruction::LShr:
|
case Instruction::LShr:
|
||||||
case Instruction::AShr:
|
case Instruction::AShr:
|
||||||
case Instruction::Shl:
|
case Instruction::Shl:
|
||||||
if (CI1->equalsInt(0)) return C1;
|
if (CI1->isZero()) return C1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -860,7 +860,7 @@ static Value *simplifyX86extrq(IntrinsicInst &II, Value *Op0,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constant Fold - extraction from zero is always {zero, undef}.
|
// Constant Fold - extraction from zero is always {zero, undef}.
|
||||||
if (CI0 && CI0->equalsInt(0))
|
if (CI0 && CI0->isZero())
|
||||||
return LowConstantHighUndef(0);
|
return LowConstantHighUndef(0);
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Reference in New Issue