From efc2339bd7e42bef51ca68d99bbdedcfa219695f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 13 Mar 2007 14:27:42 +0000 Subject: [PATCH] ifdef out some dead code. Fix PR1244 and Transforms/InstCombine/2007-03-13-CompareMerge.ll llvm-svn: 35082 --- lib/Transforms/Scalar/InstructionCombining.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index bd88fccc22e..93dde275b6c 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -992,6 +992,7 @@ static bool MaskedValueIsZero(Value *V, uint64_t Mask, unsigned Depth = 0) { return (KnownZero & Mask) == Mask; } +#if 0 /// MaskedValueIsZero - Return true if 'V & Mask' is known to be zero. We use /// this predicate to simplify operations downstream. Mask is known to be zero /// for bits that V cannot have. @@ -1001,6 +1002,7 @@ static bool MaskedValueIsZero(Value *V, const APInt& Mask, unsigned Depth = 0) { assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?"); return (KnownZero & Mask) == Mask; } +#endif /// ShrinkDemandedConstant - Check to see if the specified operand of the /// specified instruction is a constant integer. If so, check to see if there @@ -3608,8 +3610,9 @@ struct FoldICmpLogical { ICI->swapOperands(); // Swap the LHS and RHS of the ICmp } + ICmpInst *RHSICI = cast(Log.getOperand(1)); unsigned LHSCode = getICmpCode(ICI); - unsigned RHSCode = getICmpCode(cast(Log.getOperand(1))); + unsigned RHSCode = getICmpCode(RHSICI); unsigned Code; switch (Log.getOpcode()) { case Instruction::And: Code = LHSCode & RHSCode; break; @@ -3618,7 +3621,10 @@ struct FoldICmpLogical { default: assert(0 && "Illegal logical opcode!"); return 0; } - Value *RV = getICmpValue(ICmpInst::isSignedPredicate(pred), Code, LHS, RHS); + bool isSigned = ICmpInst::isSignedPredicate(RHSICI->getPredicate()) || + ICmpInst::isSignedPredicate(ICI->getPredicate()); + + Value *RV = getICmpValue(isSigned, Code, LHS, RHS); if (Instruction *I = dyn_cast(RV)) return I; // Otherwise, it's a constant boolean value...