From: Chris Lattner Date: Mon, 5 Feb 2007 04:09:35 +0000 (+0000) Subject: fix a miscompilation of 176.gcc X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4f3ebab1723edb1c839c5cb632ecce9517349010;p=oota-llvm.git fix a miscompilation of 176.gcc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33900 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index ab1ea57d6da..80b84afd237 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -5647,12 +5647,12 @@ Instruction *InstCombiner::FoldShiftByConstant(Value *Op0, ConstantInt *Op1, if (ShiftAmt1 == ShiftAmt2) { // If we have ((X >>? C) << C), turn this into X & (-1 << C). if (I.getOpcode() == Instruction::Shl) { - uint64_t Mask = -1ULL << ShiftAmt1; + uint64_t Mask = Ty->getBitMask() << ShiftAmt1; return BinaryOperator::createAnd(X, ConstantInt::get(Ty, Mask)); } // If we have ((X << C) >>u C), turn this into X & (-1 >>u C). if (I.getOpcode() == Instruction::LShr) { - uint64_t Mask = -1ULL >> ShiftAmt1; + uint64_t Mask = Ty->getBitMask() >> ShiftAmt1; return BinaryOperator::createAnd(X, ConstantInt::get(Ty, Mask)); } // We can simplify ((X << C) >>s C) into a trunc + sext.