<div dir="ltr">Wait, I thought the check was mostly useful for C code, where it detects real issues? Etienne, can you comment?</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 21, 2016 at 11:50 PM, Richard Smith via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rsmith<br>
Date: Fri Oct 21 16:50:28 2016<br>
New Revision: 284888<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=284888&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=284888&view=rev</a><br>
Log:<br>
Remove 'misc-pointer-and-integral-<wbr>operation' clang-tidy check. The only cases<br>
it detects are ill-formed (some per C++ core issue 1512, others always have<br>
been).<br>
<br>
Removed:<br>
clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.cpp<br>
clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.h<br>
clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/misc-<wbr>pointer-and-integral-<wbr>operation.rst<br>
clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation-cxx98.cpp<br>
clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation.cpp<br>
Modified:<br>
clang-tools-extra/trunk/clang-<wbr>tidy-vs/ClangTidy/Resources/<wbr>ClangTidyChecks.yaml<br>
clang-tools-extra/trunk/clang-<wbr>tidy/misc/CMakeLists.txt<br>
clang-tools-extra/trunk/clang-<wbr>tidy/misc/MiscTidyModule.cpp<br>
clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/list.rst<br>
<br>
Modified: clang-tools-extra/trunk/clang-<wbr>tidy-vs/ClangTidy/Resources/<wbr>ClangTidyChecks.yaml<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/Resources/ClangTidyChecks.yaml?rev=284888&r1=284887&r2=284888&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/clang-tidy-vs/ClangTidy/<wbr>Resources/ClangTidyChecks.<wbr>yaml?rev=284888&r1=284887&r2=<wbr>284888&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/clang-<wbr>tidy-vs/ClangTidy/Resources/<wbr>ClangTidyChecks.yaml (original)<br>
+++ clang-tools-extra/trunk/clang-<wbr>tidy-vs/ClangTidy/Resources/<wbr>ClangTidyChecks.yaml Fri Oct 21 16:50:28 2016<br>
@@ -239,10 +239,6 @@ Checks:<br>
Description:<br>
Name: misc-non-copyable-objects<br>
- Category: Miscellaneous<br>
- Label: Suspicious pointer / integer operations<br>
- Description:<br>
- Name: misc-pointer-and-integral-<wbr>operation<br>
- - Category: Miscellaneous<br>
Label: Find redundant expressions<br>
Description:<br>
Name: misc-redundant-expression<br>
<br>
Modified: clang-tools-extra/trunk/clang-<wbr>tidy/misc/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt?rev=284888&r1=284887&r2=284888&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/clang-tidy/misc/<wbr>CMakeLists.txt?rev=284888&r1=<wbr>284887&r2=284888&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/clang-<wbr>tidy/misc/CMakeLists.txt (original)<br>
+++ clang-tools-extra/trunk/clang-<wbr>tidy/misc/CMakeLists.txt Fri Oct 21 16:50:28 2016<br>
@@ -24,7 +24,6 @@ add_clang_library(<wbr>clangTidyMiscModule<br>
NewDeleteOverloadsCheck.cpp<br>
NoexceptMoveConstructorCheck.<wbr>cpp<br>
NonCopyableObjects.cpp<br>
- PointerAndIntegralOperationChe<wbr>ck.cpp<br>
RedundantExpressionCheck.cpp<br>
SizeofContainerCheck.cpp<br>
SizeofExpressionCheck.cpp<br>
<br>
Modified: clang-tools-extra/trunk/clang-<wbr>tidy/misc/MiscTidyModule.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp?rev=284888&r1=284887&r2=284888&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/clang-tidy/misc/<wbr>MiscTidyModule.cpp?rev=284888&<wbr>r1=284887&r2=284888&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/clang-<wbr>tidy/misc/MiscTidyModule.cpp (original)<br>
+++ clang-tools-extra/trunk/clang-<wbr>tidy/misc/MiscTidyModule.cpp Fri Oct 21 16:50:28 2016<br>
@@ -32,7 +32,6 @@<br>
#include "NewDeleteOverloadsCheck.h"<br>
#include "NoexceptMoveConstructorCheck.<wbr>h"<br>
#include "NonCopyableObjects.h"<br>
-#include "<wbr>PointerAndIntegralOperationChe<wbr>ck.h"<br>
#include "RedundantExpressionCheck.h"<br>
#include "SizeofContainerCheck.h"<br>
#include "SizeofExpressionCheck.h"<br>
@@ -104,8 +103,6 @@ public:<br>
"misc-noexcept-move-<wbr>constructor");<br>
CheckFactories.registerCheck<<wbr>NonCopyableObjectsCheck>(<br>
"misc-non-copyable-objects");<br>
- CheckFactories.registerCheck<<wbr>PointerAndIntegralOperationChe<wbr>ck>(<br>
- "misc-pointer-and-integral-<wbr>operation");<br>
CheckFactories.registerCheck<<wbr>RedundantExpressionCheck>(<br>
"misc-redundant-expression");<br>
CheckFactories.registerCheck<<wbr>SizeofContainerCheck>("misc-<wbr>sizeof-container");<br>
<br>
Removed: clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationCheck.cpp?rev=284887&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/clang-tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.cpp?rev=284887&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.cpp (original)<br>
+++ clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.cpp (removed)<br>
@@ -1,104 +0,0 @@<br>
-//===--- PointerAndIntegralOperationChe<wbr>ck.cpp - clang-tidy-----------------===<wbr>//<br>
-//<br>
-// The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#include "<wbr>PointerAndIntegralOperationChe<wbr>ck.h"<br>
-#include "clang/AST/ASTContext.h"<br>
-#include "clang/ASTMatchers/<wbr>ASTMatchFinder.h"<br>
-#include "../utils/Matchers.h"<br>
-<br>
-using namespace clang::ast_matchers;<br>
-<br>
-namespace clang {<br>
-namespace tidy {<br>
-namespace misc {<br>
-<br>
-void PointerAndIntegralOperationChe<wbr>ck::registerMatchers(<wbr>MatchFinder *Finder) {<br>
- const auto PointerExpr = expr(hasType(pointerType()));<br>
- const auto BoolExpr = ignoringParenImpCasts(hasType(<wbr>booleanType()));<br>
- const auto CharExpr = ignoringParenImpCasts(hasType(<wbr>isAnyCharacter()));<br>
-<br>
- const auto BinOpWithPointerExpr =<br>
- binaryOperator(unless(anyOf(<wbr>hasOperatorName(","), hasOperatorName("="))),<br>
- hasEitherOperand(PointerExpr))<wbr>;<br>
-<br>
- const auto AssignToPointerExpr =<br>
- binaryOperator(<wbr>hasOperatorName("="), hasLHS(PointerExpr));<br>
-<br>
- const auto CompareToPointerExpr =<br>
- binaryOperator(matchers::<wbr>isRelationalOperator(),<br>
- hasEitherOperand(PointerExpr))<wbr>;<br>
-<br>
- // Detect expression like: ptr = (x != y);<br>
- Finder->addMatcher(<wbr>binaryOperator(<wbr>AssignToPointerExpr, hasRHS(BoolExpr))<br>
- .bind("assign-bool-to-pointer"<wbr>),<br>
- this);<br>
-<br>
- // Detect expression like: ptr = A[i]; where A is char*.<br>
- Finder->addMatcher(<wbr>binaryOperator(<wbr>AssignToPointerExpr, hasRHS(CharExpr))<br>
- .bind("assign-char-to-pointer"<wbr>),<br>
- this);<br>
-<br>
- // Detect expression like: ptr < false;<br>
- Finder->addMatcher(<br>
- binaryOperator(<wbr>BinOpWithPointerExpr,<br>
- hasEitherOperand(<wbr>ignoringParenImpCasts(<wbr>cxxBoolLiteral())))<br>
- .bind("pointer-and-bool-<wbr>literal"),<br>
- this);<br>
-<br>
- // Detect expression like: ptr < 'a';<br>
- Finder->addMatcher(<wbr>binaryOperator(<wbr>BinOpWithPointerExpr,<br>
- hasEitherOperand(<wbr>ignoringParenImpCasts(<br>
- characterLiteral())))<br>
- .bind("pointer-and-char-<wbr>literal"),<br>
- this);<br>
-<br>
- // Detect expression like: ptr < 0;<br>
- Finder->addMatcher(<wbr>binaryOperator(<wbr>CompareToPointerExpr,<br>
- hasEitherOperand(<wbr>ignoringParenImpCasts(<br>
- integerLiteral(equals(0)))))<br>
- .bind("compare-pointer-to-<wbr>zero"),<br>
- this);<br>
-<br>
- // Detect expression like: ptr < nullptr;<br>
- Finder->addMatcher(<wbr>binaryOperator(<wbr>CompareToPointerExpr,<br>
- hasEitherOperand(<wbr>ignoringParenImpCasts(<br>
- cxxNullPtrLiteralExpr())))<br>
- .bind("compare-pointer-to-<wbr>null"),<br>
- this);<br>
-}<br>
-<br>
-void PointerAndIntegralOperationChe<wbr>ck::check(<br>
- const MatchFinder::MatchResult &Result) {<br>
- if (const auto *E =<br>
- Result.Nodes.getNodeAs<<wbr>BinaryOperator>("assign-bool-<wbr>to-pointer")) {<br>
- diag(E->getOperatorLoc(), "suspicious assignment from bool to pointer");<br>
- } else if (const auto *E = Result.Nodes.getNodeAs<<wbr>BinaryOperator>(<br>
- "assign-char-to-pointer")) {<br>
- diag(E->getOperatorLoc(), "suspicious assignment from char to pointer");<br>
- } else if (const auto *E = Result.Nodes.getNodeAs<<wbr>BinaryOperator>(<br>
- "pointer-and-bool-literal")) {<br>
- diag(E->getOperatorLoc(),<br>
- "suspicious operation between pointer and bool literal");<br>
- } else if (const auto *E = Result.Nodes.getNodeAs<<wbr>BinaryOperator>(<br>
- "pointer-and-char-literal")) {<br>
- diag(E->getOperatorLoc(),<br>
- "suspicious operation between pointer and character literal");<br>
- } else if (const auto *E = Result.Nodes.getNodeAs<<wbr>BinaryOperator>(<br>
- "compare-pointer-to-zero")) {<br>
- diag(E->getOperatorLoc(), "suspicious comparison of pointer with zero");<br>
- } else if (const auto *E = Result.Nodes.getNodeAs<<wbr>BinaryOperator>(<br>
- "compare-pointer-to-null")) {<br>
- diag(E->getOperatorLoc(),<br>
- "suspicious comparison of pointer with null expression");<br>
- }<br>
-}<br>
-<br>
-} // namespace misc<br>
-} // namespace tidy<br>
-} // namespace clang<br>
<br>
Removed: clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationCheck.h?rev=284887&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/clang-tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.h?rev=284887&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.h (original)<br>
+++ clang-tools-extra/trunk/clang-<wbr>tidy/misc/<wbr>PointerAndIntegralOperationChe<wbr>ck.h (removed)<br>
@@ -1,35 +0,0 @@<br>
-//===--- PointerAndIntegralOperationChe<wbr>ck.h - clang-tidy---------*- C++ -*-===//<br>
-//<br>
-// The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_<wbr>TIDY_MISC_POINTER_AND_<wbr>INTEGRAL_OPERATION_H<br>
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_<wbr>TIDY_MISC_POINTER_AND_<wbr>INTEGRAL_OPERATION_H<br>
-<br>
-#include "../ClangTidy.h"<br>
-<br>
-namespace clang {<br>
-namespace tidy {<br>
-namespace misc {<br>
-<br>
-/// Find suspicious expressions involving pointer and integral types.<br>
-///<br>
-/// For the user-facing documentation see:<br>
-/// <a href="http://clang.llvm.org/extra/clang-tidy/checks/misc-pointer-and-integral-operation.html" rel="noreferrer" target="_blank">http://clang.llvm.org/extra/<wbr>clang-tidy/checks/misc-<wbr>pointer-and-integral-<wbr>operation.html</a><br>
-class PointerAndIntegralOperationChe<wbr>ck : public ClangTidyCheck {<br>
-public:<br>
- PointerAndIntegralOperationChe<wbr>ck(StringRef Name, ClangTidyContext *Context)<br>
- : ClangTidyCheck(Name, Context) {}<br>
- void registerMatchers(ast_matchers:<wbr>:MatchFinder *Finder) override;<br>
- void check(const ast_matchers::MatchFinder::<wbr>MatchResult &Result) override;<br>
-};<br>
-<br>
-} // namespace misc<br>
-} // namespace tidy<br>
-} // namespace clang<br>
-<br>
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_<wbr>TIDY_MISC_POINTER_AND_<wbr>INTEGRAL_OPERATION_H<br>
<br>
Modified: clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/list.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=284888&r1=284887&r2=284888&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/docs/clang-tidy/checks/<wbr>list.rst?rev=284888&r1=284887&<wbr>r2=284888&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/list.rst (original)<br>
+++ clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/list.rst Fri Oct 21 16:50:28 2016<br>
@@ -74,7 +74,6 @@ Clang-Tidy Checks<br>
misc-new-delete-overloads<br>
misc-noexcept-move-constructor<br>
misc-non-copyable-objects<br>
- misc-pointer-and-integral-<wbr>operation<br>
misc-redundant-expression<br>
misc-sizeof-container<br>
misc-sizeof-expression<br>
<br>
Removed: clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/misc-<wbr>pointer-and-integral-<wbr>operation.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-pointer-and-integral-operation.rst?rev=284887&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/docs/clang-tidy/checks/<wbr>misc-pointer-and-integral-<wbr>operation.rst?rev=284887&view=<wbr>auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/misc-<wbr>pointer-and-integral-<wbr>operation.rst (original)<br>
+++ clang-tools-extra/trunk/docs/<wbr>clang-tidy/checks/misc-<wbr>pointer-and-integral-<wbr>operation.rst (removed)<br>
@@ -1,24 +0,0 @@<br>
-.. title:: clang-tidy - misc-pointer-and-integral-<wbr>operation<br>
-<br>
-misc-pointer-and-integral-<wbr>operation<br>
-=============================<wbr>======<br>
-<br>
-Looks for operation involving pointers and integral types. A common mistake is<br>
-to forget to dereference a pointer. These errors may be detected when a pointer<br>
-object is compare to an object with integral type.<br>
-<br>
-Examples:<br>
-<br>
-.. code-block:: c++<br>
-<br>
- char* ptr;<br>
- if ((ptr = malloc(...)) < nullptr) // Pointer comparison with operator '<'<br>
- ... // Should probably be '!='<br>
-<br>
- if (ptr == '\0') // Should probably be *ptr<br>
- ...<br>
-<br>
- void Process(std::string path, bool* error) {<br>
- [...]<br>
- if (error != false) // Should probably be *error<br>
- ...<br>
<br>
Removed: clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation-cxx98.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-integral-operation-cxx98.cpp?rev=284887&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/test/clang-tidy/misc-<wbr>pointer-and-integral-<wbr>operation-cxx98.cpp?rev=<wbr>284887&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation-cxx98.cpp (original)<br>
+++ clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation-cxx98.cpp (removed)<br>
@@ -1,45 +0,0 @@<br>
-// RUN: %check_clang_tidy %s misc-pointer-and-integral-<wbr>operation %t -- -- -std=c++98<br>
-<br>
-bool* pb;<br>
-char* pc;<br>
-int* pi;<br>
-<br>
-int Test() {<br>
- pb = false;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from bool to pointer [misc-pointer-and-integral-<wbr>operation]<br>
- pc = '\0';<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from char to pointer<br>
-<br>
- pb = (false?false:false);<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from bool to pointer<br>
- pb = (4 != 5?false:false);<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from bool to pointer<br>
-<br>
- if (pb < false) return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation between pointer and bool literal<br>
- if (pb != false) return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation between pointer and bool literal<br>
- if (pc < '\0') return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation between pointer and character literal<br>
- if (pc != '\0') return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation between pointer and character literal<br>
- if (pi < '\0') return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation between pointer and character literal<br>
- if (pi != '\0') return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation between pointer and character literal<br>
-<br>
- return 1;<br>
-}<br>
-<br>
-int Valid() {<br>
- *pb = false;<br>
- *pc = '\0';<br>
-<br>
- pb += 0;<br>
- pc += 0;<br>
- pi += 0;<br>
-<br>
- pb += (pb != 0);<br>
- pc += (pc != 0);<br>
- pi += (pi != 0);<br>
-}<br>
<br>
Removed: clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-integral-operation.cpp?rev=284887&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/clang-tools-extra/<wbr>trunk/test/clang-tidy/misc-<wbr>pointer-and-integral-<wbr>operation.cpp?rev=284887&view=<wbr>auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation.cpp (original)<br>
+++ clang-tools-extra/trunk/test/<wbr>clang-tidy/misc-pointer-and-<wbr>integral-operation.cpp (removed)<br>
@@ -1,30 +0,0 @@<br>
-// RUN: %check_clang_tidy %s misc-pointer-and-integral-<wbr>operation %t<br>
-<br>
-bool* pb;<br>
-char* pc;<br>
-int* pi;<br>
-<br>
-int Test() {<br>
- if (pi < 0) return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of pointer with zero [misc-pointer-and-integral-<wbr>operation]<br>
- if (pi <= 0) return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of pointer with zero<br>
-<br>
- if (nullptr <= pb) return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: suspicious comparison of pointer with null<br>
- if (pc < nullptr) return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of pointer with null<br>
- if (pi > nullptr) return 0;<br>
- // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of pointer with null<br>
-<br>
- return 1;<br>
-}<br>
-<br>
-int Valid() {<br>
- *pb = false;<br>
- *pc = '\0';<br>
-<br>
- pi += (pi != nullptr);<br>
- pi -= (pi == nullptr);<br>
- pc += (pb != nullptr);<br>
-}<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>