Don't leak objects in load-from-ast path unless DisableFree is set.

Also update a comment to match a code change that was done in r110978.

llvm-svn: 207065
This commit is contained in:
Nico Weber 2014-04-24 02:42:04 +00:00
parent 49fdc41b21
commit 7de358e936
1 changed files with 5 additions and 5 deletions

View File

@ -408,16 +408,16 @@ void FrontendAction::EndSourceFile() {
// Finalize the action.
EndSourceFileAction();
// Release the consumer and the AST, in that order since the consumer may
// perform actions in its destructor which require the context.
// Sema references the ast consumer, so reset sema first.
//
// FIXME: There is more per-file stuff we could just drop here?
if (CI.getFrontendOpts().DisableFree) {
BuryPointer(CI.takeASTConsumer());
bool DisableFree = CI.getFrontendOpts().DisableFree;
if (DisableFree) {
if (!isCurrentFileAST()) {
CI.resetAndLeakSema();
CI.resetAndLeakASTContext();
}
BuryPointer(CI.takeASTConsumer());
} else {
if (!isCurrentFileAST()) {
CI.setSema(0);
@ -443,7 +443,7 @@ void FrontendAction::EndSourceFile() {
// FrontendAction.
CI.clearOutputFiles(/*EraseFiles=*/shouldEraseOutputFiles());
if (isCurrentFileAST()) {
if (DisableFree && isCurrentFileAST()) {
CI.resetAndLeakSema();
CI.resetAndLeakASTContext();
CI.resetAndLeakPreprocessor();