diff options
author | Erik Verbruggen <erikjv@me.com> | 2017-05-30 11:54:55 +0000 |
---|---|---|
committer | Erik Verbruggen <erikjv@me.com> | 2017-05-30 11:54:55 +0000 |
commit | b34c79ff277b20ec00f66c50bf550f2d76ea2108 (patch) | |
tree | d21dc0c9da5e60c9d5d305cf8230514b202b19aa /clang/lib/Frontend/ASTUnit.cpp | |
parent | 626c997affc93fbf14fc48f6dad2ed430219cf9c (diff) | |
download | bcm5719-llvm-b34c79ff277b20ec00f66c50bf550f2d76ea2108.tar.gz bcm5719-llvm-b34c79ff277b20ec00f66c50bf550f2d76ea2108.zip |
Allow for unfinished #if blocks in preambles
Previously, a preamble only included #if blocks (and friends like
ifdef) if there was a corresponding #endif before any declaration or
definition. The problem is that any header file that uses include guards
will not have a preamble generated, which can make code-completion very
slow.
To prevent errors about unbalanced preprocessor conditionals in the
preamble, and unbalanced preprocessor conditionals after a preamble
containing unfinished conditionals, the conditional stack is stored
in the pch file.
This fixes PR26045.
Differential Revision: http://reviews.llvm.org/D15994
llvm-svn: 304207
Diffstat (limited to 'clang/lib/Frontend/ASTUnit.cpp')
-rw-r--r-- | clang/lib/Frontend/ASTUnit.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp index d660638a1e8..d968882174f 100644 --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -1999,6 +1999,7 @@ ASTUnit *ASTUnit::LoadFromCommandLine( PreprocessorOptions &PPOpts = CI->getPreprocessorOpts(); PPOpts.RemappedFilesKeepOriginalName = RemappedFilesKeepOriginalName; PPOpts.AllowPCHWithCompilerErrors = AllowPCHWithCompilerErrors; + PPOpts.GeneratePreamble = PrecompilePreambleAfterNParses != 0; // Override the resources path. CI->getHeaderSearchOpts().ResourceDir = ResourceFilesPath; |