diff options
| author | Nico Weber <nicolasweber@gmx.de> | 2014-04-24 00:51:03 +0000 |
|---|---|---|
| committer | Nico Weber <nicolasweber@gmx.de> | 2014-04-24 00:51:03 +0000 |
| commit | 1ada62654ffcefc9f2d2c695ba62aa1c46ab0f0d (patch) | |
| tree | d9c1932fada13fba32dc6370f2d7d5f7e9e61ddd | |
| parent | 1a80595a2b803949608e11d522d715a54c3a11bc (diff) | |
| download | bcm5719-llvm-1ada62654ffcefc9f2d2c695ba62aa1c46ab0f0d.tar.gz bcm5719-llvm-1ada62654ffcefc9f2d2c695ba62aa1c46ab0f0d.zip | |
Bury leaked sema pointer when reading from AST files.
Should suppress several LSan reports.
llvm-svn: 207056
| -rw-r--r-- | clang/include/clang/Frontend/CompilerInstance.h | 1 | ||||
| -rw-r--r-- | clang/lib/Frontend/FrontendAction.cpp | 4 |
2 files changed, 3 insertions, 2 deletions
diff --git a/clang/include/clang/Frontend/CompilerInstance.h b/clang/include/clang/Frontend/CompilerInstance.h index a7368bd1497..cefd172fafc 100644 --- a/clang/include/clang/Frontend/CompilerInstance.h +++ b/clang/include/clang/Frontend/CompilerInstance.h @@ -455,6 +455,7 @@ public: } Sema *takeSema() { return TheSema.release(); } + void resetAndLeakSema() { BuryPointer(TheSema.release()); } /// } /// @name Module Management diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp index dfe3d85ba73..6cbd8ba193e 100644 --- a/clang/lib/Frontend/FrontendAction.cpp +++ b/clang/lib/Frontend/FrontendAction.cpp @@ -415,7 +415,7 @@ void FrontendAction::EndSourceFile() { if (CI.getFrontendOpts().DisableFree) { BuryPointer(CI.takeASTConsumer()); if (!isCurrentFileAST()) { - BuryPointer(CI.takeSema()); + CI.resetAndLeakSema(); CI.resetAndLeakASTContext(); } } else { @@ -444,7 +444,7 @@ void FrontendAction::EndSourceFile() { CI.clearOutputFiles(/*EraseFiles=*/shouldEraseOutputFiles()); if (isCurrentFileAST()) { - CI.takeSema(); + CI.resetAndLeakSema(); CI.resetAndLeakASTContext(); CI.resetAndLeakPreprocessor(); CI.resetAndLeakSourceManager(); |

