diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-10 01:41:22 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-10 01:41:22 +0000 |
commit | f81340096ddf2b5a75eee94a09ad30a7501ed816 (patch) | |
tree | b3786a40e60f737643a705af917ae285ecf0a903 /clang/lib/AST/DeclCXX.cpp | |
parent | 63acdfdeb26616dfa1d9657fa666afc9b9440a2a (diff) | |
download | bcm5719-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.cpp | 9 |
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 * |