[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Chris Lattner
clattner at apple.com
Mon Mar 19 14:16:08 PDT 2007
> 1. Use APInt::getSignBit to reduce clutter (patch by Sheng Zhou)
> 2. Replace uses of the "isPositive" utility function with
> APInt::isPositive
Oooh, beautiful. Nice work guys,
-Chris
>
> ---
> Diffs of the changes: (+4 -8)
>
> InstructionCombining.cpp | 12 ++++--------
> 1 files changed, 4 insertions(+), 8 deletions(-)
>
>
> Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
> diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.663
> llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.664
> --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.663 Mon
> Mar 19 15:47:50 2007
> +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Mon Mar 19
> 15:58:18 2007
> @@ -2760,7 +2760,7 @@
> // 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 @@
> 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 @@
> 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 @@
> 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));
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list