================ @@ -0,0 +1,48 @@ +.. title:: clang-tidy - performance-bool-bitwise-operation + +performance-bool-bitwise-operation +================================== + +Finds potentially inefficient use of bitwise operators such as ``&``, ``|`` +and their compound analogues on Boolean values where logical operators like +``&&`` and ``||`` would be more appropriate. + +Bitwise operations on Booleans can incur unnecessary performance overhead due +to implicit integer conversions and missed short-circuit evaluation. + +.. code-block:: c++ + + bool invalid = false; + invalid |= x > limit.x; // warning: use logical operator '||' for boolean variable 'invalid' instead of bitwise operator '|=' + invalid |= y > limit.y; // warning: use logical operator '||' for boolean variable 'invalid' instead of bitwise operator '|=' + invalid |= z > limit.z; // warning: use logical operator '||' for boolean variable 'invalid' instead of bitwise operator '|=' + if (invalid) { + // error handling + } + +These 3 warnings suggest to assign result of logical ``||`` operation instead +of using ``|=`` operator: + +.. code-block:: c++ + + bool invalid = false; + invalid = invalid || x > limit.x; + invalid = invalid || y > limit.x; + invalid = invalid || z > limit.z; + if (invalid) { + // error handling + } + +Options +------- + +.. option:: StrictMode ---------------- PiotrZSL wrote:
Actually StrictMode should be more strict (= more findings) when set to true. Consider renaming this or invert logic. https://github.com/llvm/llvm-project/pull/142324 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits