summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Stmt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/Stmt.cpp')
-rw-r--r--clang/lib/AST/Stmt.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/AST/Stmt.cpp b/clang/lib/AST/Stmt.cpp
index ffc6c2e62a8..993dda71c98 100644
--- a/clang/lib/AST/Stmt.cpp
+++ b/clang/lib/AST/Stmt.cpp
@@ -42,9 +42,14 @@ const char *Stmt::getStmtClassName() const {
return getStmtInfoTableEntry(sClass).Name;
}
-void Stmt::DestroyChildren() {
+void Stmt::DestroyChildren(ASTContext& C) {
for (child_iterator I = child_begin(), E = child_end(); I !=E; ++I)
- delete *I; // Handles the case when *I == NULL.
+ if (Stmt* Child = *I) Child->Destroy(C);
+}
+
+void Stmt::Destroy(ASTContext& C) {
+ DestroyChildren(C);
+ this->~Stmt();
}
void Stmt::PrintStats() {
OpenPOWER on IntegriCloud