diff options
author | Ben Langmuir <blangmuir@apple.com> | 2014-02-07 17:31:11 +0000 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2014-02-07 17:31:11 +0000 |
commit | 3d4417c7fd2dbecdb3c86ede76873f2c16dfc243 (patch) | |
tree | 44a7f32ddbe052dad91f070964678191ada1c03c /clang/lib/Frontend/FrontendActions.cpp | |
parent | 4c80bdae7221edc7c66ca0da0f0a66e70418e50b (diff) | |
download | bcm5719-llvm-3d4417c7fd2dbecdb3c86ede76873f2c16dfc243.tar.gz bcm5719-llvm-3d4417c7fd2dbecdb3c86ede76873f2c16dfc243.zip |
Stat system dependencies when using -verify-pch
We don't stat the system headers to check for stalenes during regular
PCH loading for performance reasons. When explicitly saying
-verify-pch, we want to check all the dependencies - user or system.
llvm-svn: 200979
Diffstat (limited to 'clang/lib/Frontend/FrontendActions.cpp')
-rw-r--r-- | clang/lib/Frontend/FrontendActions.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index 8b174605ffd..27124ca8487 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -326,11 +326,22 @@ ASTConsumer *VerifyPCHAction::CreateASTConsumer(CompilerInstance &CI, } void VerifyPCHAction::ExecuteAction() { - getCompilerInstance(). - createPCHExternalASTSource(getCurrentFile(), /*DisablePCHValidation*/false, - /*AllowPCHWithCompilerErrors*/false, - /*AllowConfigurationMismatch*/true, - /*DeserializationListener*/0); + CompilerInstance &CI = getCompilerInstance(); + bool Preamble = CI.getPreprocessorOpts().PrecompiledPreambleBytes.first != 0; + const std::string &Sysroot = CI.getHeaderSearchOpts().Sysroot; + OwningPtr<ASTReader> Reader(new ASTReader( + CI.getPreprocessor(), CI.getASTContext(), + Sysroot.empty() ? "" : Sysroot.c_str(), + /*DisableValidation*/false, + /*AllowPCHWithCompilerErrors*/false, + /*AllowConfigurationMismatch*/true, + /*ValidateSystemInputs*/true)); + + Reader->ReadAST(getCurrentFile(), + Preamble ? serialization::MK_Preamble + : serialization::MK_PCH, + SourceLocation(), + ASTReader::ARR_ConfigurationMismatch); } namespace { |