From: Richard Trieu Date: Tue, 20 May 2014 01:34:43 +0000 (+0000) Subject: Ignore void returning overloaded functions fom -Wunused-comparison. PR19791. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1469f39895f6bc6c7095f8b2d2f707181a91b5e9;p=clang Ignore void returning overloaded functions fom -Wunused-comparison. PR19791. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209186 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index f51e188b41..aea2f432ad 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -2094,7 +2094,8 @@ bool Expr::isUnusedResultAWarning(const Expr *&WarnE, SourceLocation &Loc, case OO_Greater: case OO_GreaterEqual: case OO_LessEqual: - if (Op->getCallReturnType()->isReferenceType()) + if (Op->getCallReturnType()->isReferenceType() || + Op->getCallReturnType()->isVoidType()) break; WarnE = this; Loc = Op->getOperatorLoc(); diff --git a/test/SemaCXX/warn-unused-comparison.cpp b/test/SemaCXX/warn-unused-comparison.cpp index 4dd203875b..3afad585b6 100644 --- a/test/SemaCXX/warn-unused-comparison.cpp +++ b/test/SemaCXX/warn-unused-comparison.cpp @@ -119,3 +119,17 @@ void test() { cout < cin; // expected-warning {{relational comparison result unused}} } } + +namespace PR19791 { +struct S { + void operator!=(int); + int operator==(int); +}; + +void test() { + S s; + s != 1; + s == 1; // expected-warning{{equality comparison result unused}} + // expected-note@-1{{use '=' to turn this equality comparison into an assignment}} +} +}