[cfe-commits] r140036 - in /cfe/trunk: lib/AST/Expr.cpp test/SemaCXX/warn-unused-value.cpp

Matt Beaumont-Gay matthewbg at google.com
Mon Sep 19 11:51:20 PDT 2011


Author: matthewbg
Date: Mon Sep 19 13:51:20 2011
New Revision: 140036

URL: http://llvm.org/viewvc/llvm-project?rev=140036&view=rev
Log:
Fix a QoI bug with overloaded operators inside macros.

We were failing to set source locations and ranges in isUnusedResultAWarning
for CXXOperatorCallExprs, leading to an "expression result unused" warning
with absolutely no context if the expression was inside a macro.

Modified:
    cfe/trunk/lib/AST/Expr.cpp
    cfe/trunk/test/SemaCXX/warn-unused-value.cpp

Modified: cfe/trunk/lib/AST/Expr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=140036&r1=140035&r2=140036&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Expr.cpp (original)
+++ cfe/trunk/lib/AST/Expr.cpp Mon Sep 19 13:51:20 2011
@@ -1631,8 +1631,11 @@
     // DiagnoseUnusedComparison should be as well.
     const CXXOperatorCallExpr *Op = cast<CXXOperatorCallExpr>(this);
     if (Op->getOperator() == OO_EqualEqual ||
-        Op->getOperator() == OO_ExclaimEqual)
+        Op->getOperator() == OO_ExclaimEqual) {
+      Loc = Op->getOperatorLoc();
+      R1 = Op->getSourceRange();
       return true;
+    }
 
     // Fallthrough for generic call handling.
   }

Modified: cfe/trunk/test/SemaCXX/warn-unused-value.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-unused-value.cpp?rev=140036&r1=140035&r2=140036&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/warn-unused-value.cpp (original)
+++ cfe/trunk/test/SemaCXX/warn-unused-value.cpp Mon Sep 19 13:51:20 2011
@@ -15,3 +15,18 @@
     box->j;
   }
 }
+
+namespace test1 {
+struct Foo {
+  int i;
+  bool operator==(const Foo& rhs) {
+    return i == rhs.i;
+  }
+};
+
+#define NOP(x) (x)
+void b(Foo f1, Foo f2) {
+  NOP(f1 == f2);  // expected-warning {{expression result unused}}
+}
+#undef NOP
+}





More information about the cfe-commits mailing list