diff options
| author | Ilya Biryukov <ibiryukov@google.com> | 2017-12-28 13:10:15 +0000 |
|---|---|---|
| committer | Ilya Biryukov <ibiryukov@google.com> | 2017-12-28 13:10:15 +0000 |
| commit | da8daa3fe8e84cd8c4664edc17ddb949f48b7f62 (patch) | |
| tree | 7fa331b07b5887015a334b8d7c767779332a923b /clang-tools-extra/clangd/ClangdUnit.cpp | |
| parent | 95f0d3286b28b696908ee1860bc8a62c8a7fa1e9 (diff) | |
| download | bcm5719-llvm-da8daa3fe8e84cd8c4664edc17ddb949f48b7f62.tar.gz bcm5719-llvm-da8daa3fe8e84cd8c4664edc17ddb949f48b7f62.zip | |
[clangd] Skip function bodies when building the preamble
Summary: To make building preambles faster and keep them smaller.
Reviewers: sammccall
Reviewed By: sammccall
Subscribers: klimek, cfe-commits
Differential Revision: https://reviews.llvm.org/D41495
llvm-svn: 321521
Diffstat (limited to 'clang-tools-extra/clangd/ClangdUnit.cpp')
| -rw-r--r-- | clang-tools-extra/clangd/ClangdUnit.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/ClangdUnit.cpp b/clang-tools-extra/clangd/ClangdUnit.cpp index 5fa8cd33a9b..82ca109d2a5 100644 --- a/clang-tools-extra/clangd/ClangdUnit.cpp +++ b/clang-tools-extra/clangd/ClangdUnit.cpp @@ -529,12 +529,22 @@ CppFile::deferRebuild(StringRef NewContents, IntrusiveRefCntPtr<DiagnosticsEngine> PreambleDiagsEngine = CompilerInstance::createDiagnostics( &CI->getDiagnosticOpts(), &PreambleDiagnosticsConsumer, false); + + // Skip function bodies when building the preamble to speed up building + // the preamble and make it smaller. + assert(!CI->getFrontendOpts().SkipFunctionBodies); + CI->getFrontendOpts().SkipFunctionBodies = true; + CppFilePreambleCallbacks SerializedDeclsCollector; auto BuiltPreamble = PrecompiledPreamble::Build( *CI, ContentsBuffer.get(), Bounds, *PreambleDiagsEngine, VFS, PCHs, /*StoreInMemory=*/That->StorePreamblesInMemory, SerializedDeclsCollector); + // When building the AST for the main file, we do want the function + // bodies. + CI->getFrontendOpts().SkipFunctionBodies = false; + if (BuiltPreamble) { log(Ctx, "Built preamble of size " + Twine(BuiltPreamble->getSize()) + " for file " + Twine(That->FileName)); |

