summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Trieu <rtrieu@google.com>2014-05-20 01:34:43 +0000
committerRichard Trieu <rtrieu@google.com>2014-05-20 01:34:43 +0000
commitccedd52736bafd5d9bf6765b25a808db143f2bb9 (patch)
treec6065924030998be8e674be97303a096904581f8
parentd52b1528c0dd7a5f00e18d9ba974c8ef0e549f0b (diff)
downloadbcm5719-llvm-ccedd52736bafd5d9bf6765b25a808db143f2bb9.tar.gz
bcm5719-llvm-ccedd52736bafd5d9bf6765b25a808db143f2bb9.zip
Ignore void returning overloaded functions fom -Wunused-comparison. PR19791.
llvm-svn: 209186
-rw-r--r--clang/lib/AST/Expr.cpp3
-rw-r--r--clang/test/SemaCXX/warn-unused-comparison.cpp14
2 files changed, 16 insertions, 1 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index f51e188b416..aea2f432ad5 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/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/clang/test/SemaCXX/warn-unused-comparison.cpp b/clang/test/SemaCXX/warn-unused-comparison.cpp
index 4dd203875b3..3afad585b66 100644
--- a/clang/test/SemaCXX/warn-unused-comparison.cpp
+++ b/clang/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}}
+}
+}
OpenPOWER on IntegriCloud