diff --git a/clang/lib/Interpreter/IncrementalParser.cpp b/clang/lib/Interpreter/IncrementalParser.cpp --- a/clang/lib/Interpreter/IncrementalParser.cpp +++ b/clang/lib/Interpreter/IncrementalParser.cpp @@ -134,7 +134,10 @@ P->Initialize(); } -IncrementalParser::~IncrementalParser() { Act->FinalizeAction(); } +IncrementalParser::~IncrementalParser() { + P.reset(); + Act->FinalizeAction(); +} llvm::Expected IncrementalParser::ParseOrWrapTopLevelDecl() { diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp --- a/clang/lib/Interpreter/Interpreter.cpp +++ b/clang/lib/Interpreter/Interpreter.cpp @@ -116,6 +116,9 @@ // times, reusing the same AST. Clang->getCodeGenOpts().ClearASTBeforeBackend = false; + Clang->getFrontendOpts().DisableFree = false; + Clang->getCodeGenOpts().DisableFree = false; + return std::move(Clang); }