From: David Majnemer Date: Sat, 3 Jan 2015 02:33:25 +0000 (+0000) Subject: ValueTracking: Make computeKnownBits for Arguments a little more clear X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ef8f7e1a5a5a44a32a981863b8df62059aca47ee;p=llvm 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225109 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/ValueTracking.cpp b/lib/Analysis/ValueTracking.cpp index 3a0efa76b2f..6fdf4afebc2 100644 --- a/lib/Analysis/ValueTracking.cpp +++ b/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...