Reland [clang] Pass -clear-ast-before-backend in Clang::ConstructJob()
authorArthur Eubanks <aeubanks@google.com>
Wed, 6 Oct 2021 20:57:29 +0000 (13:57 -0700)
committerArthur Eubanks <aeubanks@google.com>
Mon, 18 Oct 2021 16:08:16 +0000 (09:08 -0700)
commit1fb24fe85a19ae71b00875ff6c96ef1831dcf7e3
treebea8f64f87d200396ce168c2c87a6fedcb40da56
parent4a5ff56b1492693317162a2db6b39ffbbb8a6f15
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
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Interpreter/Interpreter.cpp