APInt has a method for determining whether a number is a power of 2
authorDuncan Sands <baldrick@free.fr>
Wed, 26 Jan 2011 08:44:16 +0000 (08:44 +0000)
committerDuncan Sands <baldrick@free.fr>
Wed, 26 Jan 2011 08:44:16 +0000 (08:44 +0000)
which is more efficient than countPopulation - use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124283 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/ValueTracking.cpp

index 5320fa0768db86f1387c2c7eb5f5f32c956ad4c7..aa7769ea545b7e162a8e3800f245e61edbc36280 100644 (file)
@@ -656,7 +656,7 @@ void llvm::ComputeSignBit(Value *V, bool &KnownZero, bool &KnownOne,
 /// types and vectors of integers.
 bool llvm::isPowerOfTwo(Value *V, const TargetData *TD, unsigned Depth) {
   if (ConstantInt *CI = dyn_cast<ConstantInt>(V))
-    return CI->getValue().countPopulation() == 1;
+    return CI->getValue().isPowerOf2();
   // TODO: Handle vector constants.
 
   // 1 << X is clearly a power of two if the one is not shifted off the end.  If