diff options
author | Arthur Eubanks <aeubanks@google.com> | 2021-10-06 13:57:29 -0700 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2021-10-18 09:08:16 -0700 |
commit | 1fb24fe85a19ae71b00875ff6c96ef1831dcf7e3 (patch) | |
tree | bea8f64f87d200396ce168c2c87a6fedcb40da56 /clang/lib/Interpreter/Interpreter.cpp | |
parent | 4a5ff56b1492693317162a2db6b39ffbbb8a6f15 (diff) | |
download | llvm-1fb24fe85a19ae71b00875ff6c96ef1831dcf7e3.zip llvm-1fb24fe85a19ae71b00875ff6c96ef1831dcf7e3.tar.gz llvm-1fb24fe85a19ae71b00875ff6c96ef1831dcf7e3.tar.bz2 |
Reland [clang] Pass -clear-ast-before-backend in Clang::ConstructJob()
This clears the memory used for the Clang AST before we run LLVM passes.
https://llvm-compile-time-tracker.com/compare.php?from=d0a5f61c4f6fccec87fd5207e3fcd9502dd59854&to=b7437fee79e04464dd968e1a29185495f3590481&stat=max-rss
shows significant memory savings with no slowdown (in fact -O0 slightly speeds up).
For more background, see
https://lists.llvm.org/pipermail/cfe-dev/2021-September/068930.html.
Turn this off for the interpreter since it does codegen multiple times.
Relanding with fix for -print-stats: D111973
Differential Revision: https://reviews.llvm.org/D111270
Diffstat (limited to 'clang/lib/Interpreter/Interpreter.cpp')
-rw-r--r-- | clang/lib/Interpreter/Interpreter.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp index 02b3025..d14940d 100644 --- a/clang/lib/Interpreter/Interpreter.cpp +++ b/clang/lib/Interpreter/Interpreter.cpp @@ -113,6 +113,10 @@ CreateCI(const llvm::opt::ArgStringList &Argv) { Clang->getTarget().adjust(Clang->getDiagnostics(), Clang->getLangOpts()); + // Don't clear the AST before backend codegen since we do codegen multiple + // times, reusing the same AST. + Clang->getCodeGenOpts().ClearASTBeforeBackend = false; + return std::move(Clang); } |