diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-18 01:42:29 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-18 01:42:29 +0000 |
commit | 7f330cdb31a4221be501d5d969f2e8a62f457e14 (patch) | |
tree | 2786520a130f64d0284b5ba00c2478ab7310aafd /clang/lib/Serialization/ModuleManager.cpp | |
parent | 59aca1970828616abecb5691e6f956a94b7b494b (diff) | |
download | bcm5719-llvm-7f330cdb31a4221be501d5d969f2e8a62f457e14.tar.gz bcm5719-llvm-7f330cdb31a4221be501d5d969f2e8a62f457e14.zip |
Make module files passed to a module build via -fmodule-file= available to
consumers of that module.
Previously, such a file would only be available if the module happened to
actually import something from that module.
llvm-svn: 232583
Diffstat (limited to 'clang/lib/Serialization/ModuleManager.cpp')
-rw-r--r-- | clang/lib/Serialization/ModuleManager.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp index ac98ca0b872..b073984119f 100644 --- a/clang/lib/Serialization/ModuleManager.cpp +++ b/clang/lib/Serialization/ModuleManager.cpp @@ -227,6 +227,15 @@ ModuleManager::addInMemoryBuffer(StringRef FileName, InMemoryBuffers[Entry] = std::move(Buffer); } +bool ModuleManager::addKnownModuleFile(StringRef FileName) { + const FileEntry *File; + if (lookupModuleFile(FileName, 0, 0, File)) + return true; + if (!Modules.count(File)) + AdditionalKnownModuleFiles.insert(File); + return false; +} + ModuleManager::VisitState *ModuleManager::allocateVisitState() { // Fast path: if we have a cached state, use it. if (FirstVisitState) { @@ -263,6 +272,8 @@ void ModuleManager::setGlobalIndex(GlobalModuleIndex *Index) { } void ModuleManager::moduleFileAccepted(ModuleFile *MF) { + AdditionalKnownModuleFiles.remove(MF->File); + if (!GlobalIndex || GlobalIndex->loadedModuleFile(MF)) return; |