[clang] 4665901 - [AST][RecoveryExpr] Fix a bogus unused diagnostic when the type is preserved.

Haojian Wu via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 21 06:49:28 PDT 2020


Author: Haojian Wu
Date: 2020-08-21T15:48:59+02:00
New Revision: 466590192b4202ceb294eb82f881193d013dc90c

URL: https://github.com/llvm/llvm-project/commit/466590192b4202ceb294eb82f881193d013dc90c
DIFF: https://github.com/llvm/llvm-project/commit/466590192b4202ceb294eb82f881193d013dc90c.diff

LOG: [AST][RecoveryExpr] Fix a bogus unused diagnostic when the type is preserved.

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D85716

Added: 
    

Modified: 
    clang/lib/AST/Expr.cpp
    clang/test/SemaCXX/recovery-expr-type.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index e3e5e9dbdc62..8efd6837c541 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -2658,6 +2658,8 @@ bool Expr::isUnusedResultAWarning(const Expr *&WarnE, SourceLocation &Loc,
     // Otherwise, the result of the cast is unused.
     if (CE->getCastKind() == CK_ConstructorConversion)
       return CE->getSubExpr()->isUnusedResultAWarning(WarnE, Loc, R1, R2, Ctx);
+    if (CE->getCastKind() == CK_Dependent)
+      return false;
 
     WarnE = this;
     if (const CXXFunctionalCastExpr *CXXCE =

diff  --git a/clang/test/SemaCXX/recovery-expr-type.cpp b/clang/test/SemaCXX/recovery-expr-type.cpp
index 2ce47f2f8efc..7fad61e53df8 100644
--- a/clang/test/SemaCXX/recovery-expr-type.cpp
+++ b/clang/test/SemaCXX/recovery-expr-type.cpp
@@ -75,3 +75,14 @@ namespace test5 {
   template<typename...Ts> U<Ts...>& f(); // expected-error {{pack expansion used as argument for non-pack parameter of alias template}}
   double &s1 = f(); // expected-error {{no matching function}}
 }
+
+namespace test6 {
+struct T {
+  T() = delete; // expected-note {{has been explicitly marked deleted here}}
+};
+
+void func() {
+  // verify that no -Wunused-value diagnostic.
+  (T(T())); // expected-error {{call to deleted constructor}}
+}
+}


        


More information about the cfe-commits mailing list