diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-08-24 21:59:32 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-08-24 21:59:32 +0000 |
commit | d8879c85f68250baa6f2ebc463259201782e8460 (patch) | |
tree | 5620bbc3c8111058e26e69123c027ee38722889b /clang/lib/Lex/ModuleMap.cpp | |
parent | 20348229812c6592bf72e14cf6f5fa5ff00df157 (diff) | |
download | bcm5719-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.cpp | 9 |
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) { |