summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-05-30 22:38:53 +0000
committerAnders Carlsson <andersca@mac.com>2009-05-30 22:38:53 +0000
commit73b836bf3da4a4bceee4c47c659b9d144697aafd (patch)
treee77313fe4d0498839af56d7848947bc3b2a84fd7 /clang/lib/AST
parenta524f6fce64846cd82efac2ea3316cbb781f2fb3 (diff)
downloadbcm5719-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.cpp27
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;
}
OpenPOWER on IntegriCloud