summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclCXX.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-03-10 01:41:22 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-03-10 01:41:22 +0000
commitf81340096ddf2b5a75eee94a09ad30a7501ed816 (patch)
treeb3786a40e60f737643a705af917ae285ecf0a903 /clang/lib/AST/DeclCXX.cpp
parent63acdfdeb26616dfa1d9657fa666afc9b9440a2a (diff)
downloadbcm5719-llvm-f81340096ddf2b5a75eee94a09ad30a7501ed816.tar.gz
bcm5719-llvm-f81340096ddf2b5a75eee94a09ad30a7501ed816.zip
[modules] Don't clobber a destructor's operator delete when adding another one;
move the operator delete updating into a separate update record so we can cope with updating another module's destructor's operator delete. llvm-svn: 231735
Diffstat (limited to 'clang/lib/AST/DeclCXX.cpp')
-rw-r--r--clang/lib/AST/DeclCXX.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp
index 87a063438bc..82fb2a6950a 100644
--- a/clang/lib/AST/DeclCXX.cpp
+++ b/clang/lib/AST/DeclCXX.cpp
@@ -1886,6 +1886,15 @@ CXXDestructorDecl::Create(ASTContext &C, CXXRecordDecl *RD,
isInline, isImplicitlyDeclared);
}
+void CXXDestructorDecl::setOperatorDelete(FunctionDecl *OD) {
+ auto *First = cast<CXXDestructorDecl>(getFirstDecl());
+ if (OD && !First->OperatorDelete) {
+ First->OperatorDelete = OD;
+ if (auto *L = getASTMutationListener())
+ L->ResolvedOperatorDelete(First, OD);
+ }
+}
+
void CXXConversionDecl::anchor() { }
CXXConversionDecl *
OpenPOWER on IntegriCloud