fix a miscompilation of 176.gcc
authorChris Lattner <sabre@nondot.org>
Mon, 5 Feb 2007 04:09:35 +0000 (04:09 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 5 Feb 2007 04:09:35 +0000 (04:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33900 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index ab1ea57d6dabf5d8941e65dd7aa8ef0e76dbe5e3..80b84afd237627154b31067733222a3ba167af2b 100644 (file)
@@ -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.