diff options
author | Anders Carlsson <andersca@mac.com> | 2009-11-15 22:49:34 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-11-15 22:49:34 +0000 |
commit | 6d7013940a37f03fd324ef438ff984a5369013b0 (patch) | |
tree | 4d2623e805b25334a720e7102b552e8e19b20754 /include | |
parent | 70f5bc77dbe4172bde860e15d8b3c29e0d5005cb (diff) |
Make sure that virtual destructors have delete operators.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88877 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/clang/AST/DeclCXX.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/include/clang/AST/DeclCXX.h b/include/clang/AST/DeclCXX.h index eb3205f00f..6ede5dee1e 100644 --- a/include/clang/AST/DeclCXX.h +++ b/include/clang/AST/DeclCXX.h @@ -1293,12 +1293,15 @@ private: uintptr_t *BaseOrMemberDestructions; unsigned NumBaseOrMemberDestructions; + FunctionDecl *OperatorDelete; + CXXDestructorDecl(CXXRecordDecl *RD, SourceLocation L, DeclarationName N, QualType T, bool isInline, bool isImplicitlyDeclared) : CXXMethodDecl(CXXDestructor, RD, L, N, T, /*DInfo=*/0, false, isInline), ImplicitlyDefined(false), - BaseOrMemberDestructions(0), NumBaseOrMemberDestructions(0) { + BaseOrMemberDestructions(0), NumBaseOrMemberDestructions(0), + OperatorDelete(0) { setImplicit(isImplicitlyDeclared); } virtual void Destroy(ASTContext& C); @@ -1327,6 +1330,9 @@ public: ImplicitlyDefined = ID; } + void setOperatorDelete(FunctionDecl *OD) { OperatorDelete = OD; } + const FunctionDecl *getOperatorDelete() const { return OperatorDelete; } + /// destr_iterator - Iterates through the member/base destruction list. /// destr_const_iterator - Iterates through the member/base destruction list. |