From 8df46c92897a8e1ac7925ab5f26d1b47a393a4d6 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Sat, 3 Jan 2015 02:33:25 +0000 Subject: ValueTracking: Make computeKnownBits for Arguments a little more clear We would sometimes leave the out-param APInts untouched while going through computeKnownBits. While I don't know of a way to trigger a bug involving this in practice, it goes against the overall design of computeKnownBits. Found via code inspection. llvm-svn: 225109 --- llvm/lib/Analysis/ValueTracking.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'llvm/lib/Analysis/ValueTracking.cpp') diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 3a0efa76b2f..6fdf4afebc2 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -831,6 +831,9 @@ void computeKnownBits(Value *V, APInt &KnownZero, APInt &KnownOne, if (Align) KnownZero = APInt::getLowBitsSet(BitWidth, countTrailingZeros(Align)); + else + KnownZero.clearAllBits(); + KnownOne.clearAllBits(); // Don't give up yet... there might be an assumption that provides more // information... -- cgit v1.2.3