forked from OSchip/llvm-project
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:
parent
49fdc41b21
commit
7de358e936
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue