aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/AnalysisBasedWarnings.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2014-05-20 17:31:11 +0000
committerJordan Rose <jordan_rose@apple.com>2014-05-20 17:31:11 +0000
commit7afd71e4ff5d13fdea68cd1261a96b19488d39db (patch)
tree386aabbe4f8b56b23161b66b32bc5ff0e77b8f92 /clang/lib/Sema/AnalysisBasedWarnings.cpp
parentd2402470ee1b1253f6dc312b22fd967906ae8bd4 (diff)
downloadllvm-7afd71e4ff5d13fdea68cd1261a96b19488d39db.zip
llvm-7afd71e4ff5d13fdea68cd1261a96b19488d39db.tar.gz
llvm-7afd71e4ff5d13fdea68cd1261a96b19488d39db.tar.bz2
Add a check for tautological bitwise comparisons to -Wtautological-compare.
This catches issues like: if ((x & 8) == 4) { ... } if ((x | 4) != 3) { ... } Patch by Anders Rönnholm! llvm-svn: 209221
Diffstat (limited to 'clang/lib/Sema/AnalysisBasedWarnings.cpp')
-rw-r--r--clang/lib/Sema/AnalysisBasedWarnings.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp
index d10b5a8..048019f 100644
--- a/clang/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp
@@ -146,6 +146,15 @@ public:
S.Diag(B->getExprLoc(), diag::warn_tautological_overlap_comparison)
<< DiagRange << isAlwaysTrue;
}
+
+ void compareBitwiseEquality(const BinaryOperator *B, bool isAlwaysTrue) {
+ if (HasMacroID(B))
+ return;
+
+ SourceRange DiagRange = B->getSourceRange();
+ S.Diag(B->getExprLoc(), diag::warn_comparison_bitwise_always)
+ << DiagRange << isAlwaysTrue;
+ }
};