watsond created this revision. ...ENDING) ...
[clang-tidy] Catch trivially true statements like a != 1 || a != 3 https://reviews.llvm.org/D29857 Files: clang-tidy/misc/RedundantExpressionCheck.cpp test/clang-tidy/misc-redundant-expression.cpp Index: test/clang-tidy/misc-redundant-expression.cpp =================================================================== --- test/clang-tidy/misc-redundant-expression.cpp +++ test/clang-tidy/misc-redundant-expression.cpp @@ -321,6 +321,8 @@ // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: logical expression is always true if (X <= 10 || X >= 11) return 1; // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: logical expression is always true + if (X != 7 || X != 14) return 1; + // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: logical expression is always true if (X < 7 && X < 6) return 1; // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: expression is redundant Index: clang-tidy/misc/RedundantExpressionCheck.cpp =================================================================== --- clang-tidy/misc/RedundantExpressionCheck.cpp +++ clang-tidy/misc/RedundantExpressionCheck.cpp @@ -239,6 +239,11 @@ (OpcodeRHS == BO_LT || OpcodeRHS == BO_LE)) return true; + // Handle cases where constants are different but both ops are !=, like: + // x != 5 || x != 10 + if (OpcodeLHS == BO_NE || OpcodeLHS == BO_NE) + return true; + return false; }
Index: test/clang-tidy/misc-redundant-expression.cpp =================================================================== --- test/clang-tidy/misc-redundant-expression.cpp +++ test/clang-tidy/misc-redundant-expression.cpp @@ -321,6 +321,8 @@ // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: logical expression is always true if (X <= 10 || X >= 11) return 1; // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: logical expression is always true + if (X != 7 || X != 14) return 1; + // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: logical expression is always true if (X < 7 && X < 6) return 1; // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: expression is redundant Index: clang-tidy/misc/RedundantExpressionCheck.cpp =================================================================== --- clang-tidy/misc/RedundantExpressionCheck.cpp +++ clang-tidy/misc/RedundantExpressionCheck.cpp @@ -239,6 +239,11 @@ (OpcodeRHS == BO_LT || OpcodeRHS == BO_LE)) return true; + // Handle cases where constants are different but both ops are !=, like: + // x != 5 || x != 10 + if (OpcodeLHS == BO_NE || OpcodeLHS == BO_NE) + return true; + return false; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits