diff options
author | Anders Carlsson <andersca@mac.com> | 2009-05-30 22:38:53 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-05-30 22:38:53 +0000 |
commit | 73b836bf3da4a4bceee4c47c659b9d144697aafd (patch) | |
tree | e77313fe4d0498839af56d7848947bc3b2a84fd7 /clang/lib/AST | |
parent | a524f6fce64846cd82efac2ea3316cbb781f2fb3 (diff) | |
download | bcm5719-llvm-73b836bf3da4a4bceee4c47c659b9d144697aafd.tar.gz bcm5719-llvm-73b836bf3da4a4bceee4c47c659b9d144697aafd.zip |
Clean up the newly added C++ AST nodes.
llvm-svn: 72643
Diffstat (limited to 'clang/lib/AST')
-rw-r--r-- | clang/lib/AST/ExprCXX.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp index fccef01260d..4a15245591e 100644 --- a/clang/lib/AST/ExprCXX.cpp +++ b/clang/lib/AST/ExprCXX.cpp @@ -238,8 +238,12 @@ const char *CXXNamedCastExpr::getCastName() const { CXXTemporary *CXXTemporary::Create(ASTContext &C, const CXXDestructorDecl *Destructor) { - // FIXME: Allocate using the ASTContext. - return new CXXTemporary(Destructor); + return new (C) CXXTemporary(Destructor); +} + +void CXXTemporary::Destroy(ASTContext &C) { + this->~CXXTemporary(); + C.Deallocate(this); } CXXBindTemporaryExpr *CXXBindTemporaryExpr::Create(ASTContext &C, @@ -251,6 +255,12 @@ CXXBindTemporaryExpr *CXXBindTemporaryExpr::Create(ASTContext &C, return new (C) CXXBindTemporaryExpr(Temp, SubExpr); } +void CXXBindTemporaryExpr::Destroy(ASTContext &C) { + Temp->Destroy(C); + this->~CXXBindTemporaryExpr(); + C.Deallocate(this); +} + CXXTemporaryObjectExpr::CXXTemporaryObjectExpr(ASTContext &C, CXXConstructorDecl *Cons, QualType writtenTy, @@ -306,6 +316,19 @@ CXXExprWithTemporaries::CXXExprWithTemporaries(Expr *subexpr, } } +CXXExprWithTemporaries *CXXExprWithTemporaries::Create(ASTContext &C, + Expr *SubExpr, + CXXTemporary **Temps, + unsigned NumTemps) { + return new (C) CXXExprWithTemporaries(SubExpr, Temps, NumTemps); +} + +void CXXExprWithTemporaries::Destroy(ASTContext &C) { + DestroyChildren(C); + this->~CXXExprWithTemporaries(); + C.Deallocate(this); +} + CXXExprWithTemporaries::~CXXExprWithTemporaries() { delete[] Temps; } |