Changes in directory llvm/lib/Transforms/Scalar:
InstructionCombining.cpp updated: 1.686 -> 1.687 --- Log message: 1. Avoid unnecessary APInt construction if possible. 2. Use isStrictlyPositive() instead of isPositive() in two places where they need APInt value > 0 not only >=0. --- Diffs of the changes: (+5 -7) InstructionCombining.cpp | 12 +++++------- 1 files changed, 5 insertions(+), 7 deletions(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.686 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.687 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.686 Sat Mar 24 23:26:16 2007 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Sun Mar 25 00:01:29 2007 @@ -2443,10 +2443,9 @@ // Check to see if this is an unsigned division with an exact power of 2, // if so, convert to a right shift. if (ConstantInt *C = dyn_cast<ConstantInt>(Op1)) { - APInt Val(C->getValue()); - if (Val != 0 && Val.isPowerOf2()) // Don't break X / 0 + if (!C->isZero() && C->getValue().isPowerOf2()) // Don't break X / 0 return BinaryOperator::createLShr(Op0, - ConstantInt::get(Op0->getType(), Val.logBase2())); + ConstantInt::get(Op0->getType(), C->getValue().logBase2())); } // X udiv (C1 << N), where C1 is "1<<C2" --> X >> (N+C2) @@ -2673,8 +2672,7 @@ // Turn A % (C << N), where C is 2^k, into A & ((C << N)-1) if (RHSI->getOpcode() == Instruction::Shl && isa<ConstantInt>(RHSI->getOperand(0))) { - APInt C1(cast<ConstantInt>(RHSI->getOperand(0))->getValue()); - if (C1.isPowerOf2()) { + if (cast<ConstantInt>(RHSI->getOperand(0))->getValue().isPowerOf2()) { Constant *N1 = ConstantInt::getAllOnesValue(I.getType()); Value *Add = InsertNewInstBefore(BinaryOperator::createAdd(RHSI, N1, "tmp"), I); @@ -2711,7 +2709,7 @@ if (Value *RHSNeg = dyn_castNegVal(Op1)) if (!isa<ConstantInt>(RHSNeg) || - cast<ConstantInt>(RHSNeg)->getValue().isPositive()) { + cast<ConstantInt>(RHSNeg)->getValue().isStrictlyPositive()) { // X % -Y -> X % Y AddUsesToWorkList(I); I.setOperand(1, RHSNeg); @@ -7466,7 +7464,7 @@ (ParamTy->isInteger() && ActTy->isInteger() && ParamTy->getPrimitiveSizeInBits() >= ActTy->getPrimitiveSizeInBits()) || (c && ParamTy->getPrimitiveSizeInBits() >= ActTy->getPrimitiveSizeInBits() - && c->getValue().isPositive()); + && c->getValue().isStrictlyPositive()); if (Callee->isDeclaration() && !isConvertible) return false; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits