summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/Sema.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-10-22 17:50:19 +0000
committerReid Kleckner <reid@kleckner.net>2014-10-22 17:50:19 +0000
commit89bd8d62f3c3305d4ec433307dc4c0b1df1d4be7 (patch)
tree80abf7c31dda4fb53511773fb0dc72324b862f6c /clang/lib/Sema/Sema.cpp
parentdb0856658810b47f29986a9a1dea5b6ae9ceab35 (diff)
downloadbcm5719-llvm-89bd8d62f3c3305d4ec433307dc4c0b1df1d4be7.tar.gz
bcm5719-llvm-89bd8d62f3c3305d4ec433307dc4c0b1df1d4be7.zip
Reland r219810 "Fix late template parsing leak with incremental processing"
Original message: Add a second late template parser callback meant to cleanup any resources allocated by late template parsing. Call it from the Sema::ActOnEndOfTranslationUnit method after all pending template instantiations have been completed. Teach Parser::ParseTopLevelDecl to install the cleanup callback when incremental processing is enabled so that Parser::TemplateIds can be freed. Patch by Brad King! llvm-svn: 220400
Diffstat (limited to 'clang/lib/Sema/Sema.cpp')
-rw-r--r--clang/lib/Sema/Sema.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index aae2008957e..901b669e6d4 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -88,6 +88,7 @@ Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer,
CodeSegStack(nullptr), CurInitSeg(nullptr), VisContext(nullptr),
IsBuildingRecoveryCallExpr(false),
ExprNeedsCleanups(false), LateTemplateParser(nullptr),
+ LateTemplateParserCleanup(nullptr),
OpaqueParser(nullptr), IdResolver(pp), StdInitializerList(nullptr),
CXXTypeInfoDecl(nullptr), MSVCGuidDecl(nullptr),
NSNumberDecl(nullptr),
@@ -672,6 +673,9 @@ void Sema::ActOnEndOfTranslationUnit() {
}
PerformPendingInstantiations();
+ if (LateTemplateParserCleanup)
+ LateTemplateParserCleanup(OpaqueParser);
+
CheckDelayedMemberExceptionSpecs();
}
OpenPOWER on IntegriCloud