make this 64 bit clean, fixed test30 of /Regression/Transforms/InstCombine/add.ll
authorAndrew Lenharth <andrewl@lenharth.org>
Wed, 2 Nov 2005 18:35:40 +0000 (18:35 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Wed, 2 Nov 2005 18:35:40 +0000 (18:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24158 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index adafccddf003a9604934a2b5b3d5db6b82e17c34..1db2df250687441ff6069df12bd71c93acd4e5e3 100644 (file)
@@ -710,7 +710,7 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
     // X + (signbit) --> X ^ signbit
     if (ConstantInt *CI = dyn_cast<ConstantInt>(RHSC)) {
       unsigned NumBits = CI->getType()->getPrimitiveSizeInBits();
-      uint64_t Val = CI->getRawValue() & (1ULL << NumBits)-1;
+      uint64_t Val = CI->getRawValue() & (~0ULL >> (64- NumBits));
       if (Val == (1ULL << (NumBits-1)))
         return BinaryOperator::createXor(LHS, RHS);
     }