aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-03-19 20:58:18 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-03-19 20:58:18 +0000
commit5a1e3e1a7d08b1baaf8971be69e2c8862a581985 (patch)
treed485d89ca3bb7c72ea5373fdcf95e95b7d44ee60
parent8439bc8d69d687918831927ca34e75497a95c59a (diff)
downloadexternal_llvm-5a1e3e1a7d08b1baaf8971be69e2c8862a581985.zip
external_llvm-5a1e3e1a7d08b1baaf8971be69e2c8862a581985.tar.gz
external_llvm-5a1e3e1a7d08b1baaf8971be69e2c8862a581985.tar.bz2
1. Use APInt::getSignBit to reduce clutter (patch by Sheng Zhou)
2. Replace uses of the "isPositive" utility function with APInt::isPositive git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35185 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/InstructionCombining.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index 38b05b5..e38622a 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -2760,7 +2760,7 @@ FoundSExt:
// highest order bit set.
static bool isSignBit(ConstantInt *CI) {
unsigned NumBits = CI->getType()->getPrimitiveSizeInBits();
- return (CI->getZExtValue() & (~0ULL >> (64-NumBits))) == (1ULL << (NumBits-1));
+ return CI->getValue() == APInt::getSignBit(NumBits);
}
Instruction *InstCombiner::visitSub(BinaryOperator &I) {
@@ -4925,10 +4925,6 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
return Changed ? &I : 0;
}
-static bool isPositive(ConstantInt *C) {
- return C->getSExtValue() >= 0;
-}
-
/// AddWithOverflow - Compute Result = In1+In2, returning true if the result
/// overflowed for this type.
static bool AddWithOverflow(ConstantInt *&Result, ConstantInt *In1,
@@ -5707,12 +5703,12 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
LoBound = Prod;
LoOverflow = ProdOV;
HiOverflow = ProdOV || AddWithOverflow(HiBound, LoBound, DivRHS);
- } else if (isPositive(DivRHS)) { // Divisor is > 0.
+ } else if (DivRHS->getValue().isPositive()) { // Divisor is > 0.
if (CI->isNullValue()) { // (X / pos) op 0
// Can't overflow.
LoBound = cast<ConstantInt>(ConstantExpr::getNeg(SubOne(DivRHS)));
HiBound = DivRHS;
- } else if (isPositive(CI)) { // (X / pos) op pos
+ } else if (CI->getValue().isPositive()) { // (X / pos) op pos
LoBound = Prod;
LoOverflow = ProdOV;
HiOverflow = ProdOV || AddWithOverflow(HiBound, Prod, DivRHS);
@@ -5729,7 +5725,7 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
HiBound = cast<ConstantInt>(ConstantExpr::getNeg(DivRHS));
if (HiBound == DivRHS)
LoBound = 0; // - INTMIN = INTMIN
- } else if (isPositive(CI)) { // (X / neg) op pos
+ } else if (CI->getValue().isPositive()) { // (X / neg) op pos
HiOverflow = LoOverflow = ProdOV;
if (!LoOverflow)
LoOverflow = AddWithOverflow(LoBound, Prod, AddOne(DivRHS));