[clang-tools-extra] r324079 - [clang-tidy] Don't reinvent the wheel, use existing log2 functions.

Benjamin Kramer via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 2 05:23:21 PST 2018


Author: d0k
Date: Fri Feb  2 05:23:21 2018
New Revision: 324079

URL: http://llvm.org/viewvc/llvm-project?rev=324079&view=rev
Log:
[clang-tidy] Don't reinvent the wheel, use existing log2 functions.

This also makes the code ready for int128, even though I think it's
currently impossible to get an int128 into this code path.

Modified:
    clang-tools-extra/trunk/clang-tidy/misc/RedundantExpressionCheck.cpp

Modified: clang-tools-extra/trunk/clang-tidy/misc/RedundantExpressionCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/RedundantExpressionCheck.cpp?rev=324079&r1=324078&r2=324079&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/RedundantExpressionCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/RedundantExpressionCheck.cpp Fri Feb  2 05:23:21 2018
@@ -966,13 +966,6 @@ void RedundantExpressionCheck::checkRela
   }
 }
 
-unsigned intLog2(uint64_t X) {
-  unsigned Result = 0;
-  while (X >>= 1)
-    ++Result;
-  return Result;
-}
-
 void RedundantExpressionCheck::check(const MatchFinder::MatchResult &Result) {
   if (const auto *BinOp = Result.Nodes.getNodeAs<BinaryOperator>("binary")) {
     // If the expression's constants are macros, check whether they are
@@ -1049,7 +1042,7 @@ void RedundantExpressionCheck::check(con
     // If ShiftingConst is shifted left with more bits than the position of the
     // leftmost 1 in the bit representation of AndValue, AndConstant is
     // ineffective.
-    if (intLog2(AndValue.getExtValue()) >= ShiftingValue)
+    if (AndValue.getActiveBits() > ShiftingValue)
       return;
 
     auto Diag = diag(BinaryAndExpr->getOperatorLoc(),




More information about the cfe-commits mailing list