summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ModuleManager.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-03-18 01:42:29 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-03-18 01:42:29 +0000
commit7f330cdb31a4221be501d5d969f2e8a62f457e14 (patch)
tree2786520a130f64d0284b5ba00c2478ab7310aafd /clang/lib/Serialization/ModuleManager.cpp
parent59aca1970828616abecb5691e6f956a94b7b494b (diff)
downloadbcm5719-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.cpp11
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;
OpenPOWER on IntegriCloud