diff options
author | Sunho Kim <ksunhokim123@gmail.com> | 2022-06-18 06:35:29 +0900 |
---|---|---|
committer | Sunho Kim <ksunhokim123@gmail.com> | 2022-06-18 06:36:25 +0900 |
commit | 7bc00ce5cd41aad5fd0775f58c8e85a0a8d9ee56 (patch) | |
tree | d1b2e7fd492b866553424b428006b48e780045bf /clang/lib/Interpreter/Interpreter.cpp | |
parent | 8da8b6143098137468385cbaca12b35aba9e8191 (diff) | |
download | llvm-7bc00ce5cd41aad5fd0775f58c8e85a0a8d9ee56.zip llvm-7bc00ce5cd41aad5fd0775f58c8e85a0a8d9ee56.tar.gz llvm-7bc00ce5cd41aad5fd0775f58c8e85a0a8d9ee56.tar.bz2 |
[clang-repl] Remove memory leak of ASTContext/TargetMachine.
Removes memory leak of ASTContext and TargetMachine. When DisableFree is turned on, it intentionally leaks these instances as they can be trivially deallocated. This patch turns this off and delete Parser instance early so that they will not reference dangling pargma headers.
Asan shouldn't detect these as leaks normally, since burypointer is called for them. But, every invocation of incremental parser createa an additional leak of TargetMachine. If there are many invocations within a single test case, we easily reach number of leaks exceeding kGraveYardMaxSize (which is 12) and leaks start to get reported by asan buildbots.
Reviewed By: v.g.vassilev
Differential Revision: https://reviews.llvm.org/D127991
Diffstat (limited to 'clang/lib/Interpreter/Interpreter.cpp')
-rw-r--r-- | clang/lib/Interpreter/Interpreter.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp index 470c9c2..564b24e 100644 --- a/clang/lib/Interpreter/Interpreter.cpp +++ b/clang/lib/Interpreter/Interpreter.cpp @@ -116,6 +116,9 @@ CreateCI(const llvm::opt::ArgStringList &Argv) { // times, reusing the same AST. Clang->getCodeGenOpts().ClearASTBeforeBackend = false; + Clang->getFrontendOpts().DisableFree = false; + Clang->getCodeGenOpts().DisableFree = false; + return std::move(Clang); } |