summaryrefslogtreecommitdiff
path: root/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2008-10-27 23:24:03 +0000
committerDavid Greene <greened@obbligato.org>2008-10-27 23:24:03 +0000
commitc714f1309049b2fd9e4ab68c8a7b480c63a4be0c (patch)
tree976bccac6fb2c9658f4361930ecfea3a51c5c08b /lib/Analysis/ValueTracking.cpp
parentb3990d5e948769a16d4ee77dbdff8a2bed8fb126 (diff)
downloadllvm-c714f1309049b2fd9e4ab68c8a7b480c63a4be0c.tar.gz
llvm-c714f1309049b2fd9e4ab68c8a7b480c63a4be0c.tar.bz2
llvm-c714f1309049b2fd9e4ab68c8a7b480c63a4be0c.tar.xz
Re-apply 55137 with fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58296 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/ValueTracking.cpp')
-rw-r--r--lib/Analysis/ValueTracking.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Analysis/ValueTracking.cpp b/lib/Analysis/ValueTracking.cpp
index 3a04f5eb86..c51a719313 100644
--- a/lib/Analysis/ValueTracking.cpp
+++ b/lib/Analysis/ValueTracking.cpp
@@ -509,12 +509,15 @@ void llvm::ComputeMaskedBits(Value *V, const APInt &Mask,
ComputeMaskedBits(R, Mask2, KnownZero2, KnownOne2, TD, Depth+1);
Mask2 = APInt::getLowBitsSet(BitWidth,
KnownZero2.countTrailingOnes());
- KnownOne2.clear();
- KnownZero2.clear();
- ComputeMaskedBits(L, Mask2, KnownZero2, KnownOne2, TD, Depth+1);
+
+ // We need to take the minimum number of known bits
+ APInt KnownZero3(KnownZero), KnownOne3(KnownOne);
+ ComputeMaskedBits(L, Mask2, KnownZero3, KnownOne3, TD, Depth+1);
+
KnownZero = Mask &
APInt::getLowBitsSet(BitWidth,
- KnownZero2.countTrailingOnes());
+ std::min(KnownZero2.countTrailingOnes(),
+ KnownZero3.countTrailingOnes()));
break;
}
}