From c714f1309049b2fd9e4ab68c8a7b480c63a4be0c Mon Sep 17 00:00:00 2001 From: David Greene Date: Mon, 27 Oct 2008 23:24:03 +0000 Subject: Re-apply 55137 with fixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58296 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/ValueTracking.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'lib/Analysis/ValueTracking.cpp') 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; } } -- cgit v1.2.3-18-g5258