diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-05-29 21:03:38 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-05-29 21:03:38 +0000 |
| commit | 0a63741a3f969f02bcd20121602e7a662933eae9 (patch) | |
| tree | 2f9584624dae4b3623f18af7d08bcee132b92eab /clang/lib/AST/DeclCXX.cpp | |
| parent | 7de5966d76fea50cdf1ded7ccd2677594a12ef36 (diff) | |
| download | bcm5719-llvm-0a63741a3f969f02bcd20121602e7a662933eae9.tar.gz bcm5719-llvm-0a63741a3f969f02bcd20121602e7a662933eae9.zip | |
Add code for emitting C++ destructors. Not used yet.
llvm-svn: 72591
Diffstat (limited to 'clang/lib/AST/DeclCXX.cpp')
| -rw-r--r-- | clang/lib/AST/DeclCXX.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 30d76cb9e3d..5b806fae7b8 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -187,6 +187,23 @@ void CXXRecordDecl::addConversionFunction(ASTContext &Context, Conversions.addOverload(ConvDecl); } +const CXXDestructorDecl * +CXXRecordDecl::getDestructor(ASTContext &Context) { + QualType ClassType = Context.getTypeDeclType(this); + + DeclarationName Name + = Context.DeclarationNames.getCXXDestructorName(ClassType); + + DeclContext::lookup_iterator I, E; + llvm::tie(I, E) = lookup(Context, Name); + assert(I != E && "Did not find a destructor!"); + + const CXXDestructorDecl *Dtor = cast<CXXDestructorDecl>(*I); + assert(++I == E && "Found more than one destructor!"); + + return Dtor; +} + CXXMethodDecl * CXXMethodDecl::Create(ASTContext &C, CXXRecordDecl *RD, SourceLocation L, DeclarationName N, |

