aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-05-21 15:53:55 +0000
committerTed Kremenek <kremenek@apple.com>2008-05-21 15:53:55 +0000
commit8e355f296a3ba45b94de49dbb18ae6a6e67df04c (patch)
tree49890bf7e8523985b59084de337a4bdea4e8aeff
parent5c96c27e7f35e49a36c6ffdc55cdd5de0230f7af (diff)
When destroying DeclStmts, also destroy the associated Decl (reclaim its memory).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51379 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/AST/Stmt.h2
-rw-r--r--lib/AST/Stmt.cpp5
2 files changed, 7 insertions, 0 deletions
diff --git a/include/clang/AST/Stmt.h b/include/clang/AST/Stmt.h
index 8b29617fa0..c854bb5640 100644
--- a/include/clang/AST/Stmt.h
+++ b/include/clang/AST/Stmt.h
@@ -146,6 +146,8 @@ public:
DeclStmt(ScopedDecl *D, SourceLocation startLoc, SourceLocation endLoc)
: Stmt(DeclStmtClass), TheDecl(D), StartLoc(startLoc), EndLoc(endLoc) {}
+ virtual void Destroy(ASTContext& Ctx);
+
const ScopedDecl *getDecl() const { return TheDecl; }
ScopedDecl *getDecl() { return TheDecl; }
diff --git a/lib/AST/Stmt.cpp b/lib/AST/Stmt.cpp
index 6ed9966135..b12518fa78 100644
--- a/lib/AST/Stmt.cpp
+++ b/lib/AST/Stmt.cpp
@@ -55,6 +55,11 @@ void Stmt::Destroy(ASTContext& C) {
delete this;
}
+void DeclStmt::Destroy(ASTContext& C) {
+ TheDecl->Destroy(C);
+ Stmt::Destroy(C);
+}
+
void Stmt::PrintStats() {
// Ensure the table is primed.
getStmtInfoTableEntry(Stmt::NullStmtClass);