From 9e260c12bce77c80aa4da64ac44874687c684580 Mon Sep 17 00:00:00 2001 From: Dávid Bolvanský Date: Sat, 23 Nov 2019 23:57:17 +0100 Subject: [Diagnostics] Make behaviour of Clang's -Wdeprecated-copy same as in GCC Do not warn for functions that are explicitly marked delete or default, which follows the behavior of the GCC warning. --- clang/lib/Sema/SemaDeclCXX.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'clang/lib/Sema/SemaDeclCXX.cpp') diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index d7200185bdf..9c220efebe6 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -12406,7 +12406,8 @@ static void diagnoseDeprecatedCopyOperation(Sema &S, CXXMethodDecl *CopyOp) { // In Microsoft mode, assignment operations don't affect constructors and // vice versa. - if (RD->hasUserDeclaredDestructor()) { + if (RD->hasUserDeclaredDestructor() && + RD->getDestructor()->isUserProvided()) { UserDeclaredOperation = RD->getDestructor(); } else if (!isa(CopyOp) && RD->hasUserDeclaredCopyConstructor() && @@ -12432,7 +12433,7 @@ static void diagnoseDeprecatedCopyOperation(Sema &S, CXXMethodDecl *CopyOp) { assert(UserDeclaredOperation); } - if (UserDeclaredOperation) { + if (UserDeclaredOperation && UserDeclaredOperation->isUserProvided()) { S.Diag(UserDeclaredOperation->getLocation(), isa(UserDeclaredOperation) ? diag::warn_deprecated_copy_dtor_operation -- cgit v1.2.3