summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/ModuleMap.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-08-24 21:59:32 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-08-24 21:59:32 +0000
commitd8879c85f68250baa6f2ebc463259201782e8460 (patch)
tree5620bbc3c8111058e26e69123c027ee38722889b /clang/lib/Lex/ModuleMap.cpp
parent20348229812c6592bf72e14cf6f5fa5ff00df157 (diff)
downloadbcm5719-llvm-d8879c85f68250baa6f2ebc463259201782e8460.tar.gz
bcm5719-llvm-d8879c85f68250baa6f2ebc463259201782e8460.zip
[modules] Remove unnecessary deserialization of fully-external HeaderFileInfos for all files we've seen in this compilation.
llvm-svn: 245881
Diffstat (limited to 'clang/lib/Lex/ModuleMap.cpp')
-rw-r--r--clang/lib/Lex/ModuleMap.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp
index d619b52bef5..e1594eee368 100644
--- a/clang/lib/Lex/ModuleMap.cpp
+++ b/clang/lib/Lex/ModuleMap.cpp
@@ -796,7 +796,7 @@ static Module::HeaderKind headerRoleToKind(ModuleMap::ModuleHeaderRole Role) {
}
void ModuleMap::addHeader(Module *Mod, Module::Header Header,
- ModuleHeaderRole Role) {
+ ModuleHeaderRole Role, bool Imported) {
KnownHeader KH(Mod, Role);
// Only add each header to the headers list once.
@@ -811,7 +811,12 @@ void ModuleMap::addHeader(Module *Mod, Module::Header Header,
Mod->Headers[headerRoleToKind(Role)].push_back(std::move(Header));
bool isCompilingModuleHeader = Mod->getTopLevelModule() == CompilingModule;
- HeaderInfo.MarkFileModuleHeader(Header.Entry, Role, isCompilingModuleHeader);
+ if (!Imported || isCompilingModuleHeader) {
+ // When we import HeaderFileInfo, the external source is expected to
+ // set the isModuleHeader flag itself.
+ HeaderInfo.MarkFileModuleHeader(Header.Entry, Role,
+ isCompilingModuleHeader);
+ }
}
void ModuleMap::excludeHeader(Module *Mod, Module::Header Header) {
OpenPOWER on IntegriCloud