aboutsummaryrefslogtreecommitdiff
path: root/lib/Serialization
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2013-03-27 16:47:18 +0000
committerDouglas Gregor <dgregor@apple.com>2013-03-27 16:47:18 +0000
commitc544ba09695e300f31355af342258bd57619e737 (patch)
tree9947152b05a7ad85b91ab837892ae6bbb67d1e12 /lib/Serialization
parent8343f8e00a222ca09dde536c77313e3e6e03ad59 (diff)
<rdar://problem/13509689> Introduce -module-file-info option that provides information about a particular module file.
This option can be useful for end users who want to know why they ended up with a ton of different variants of the "std" module in their module cache. This problem should go away over time, as we reduce the need for module variants, but it will never go away entirely. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178148 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization')
-rw-r--r--lib/Serialization/ASTReader.cpp5
-rw-r--r--lib/Serialization/ModuleManager.cpp14
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp
index 55e333a17b..4c2d2197e4 100644
--- a/lib/Serialization/ASTReader.cpp
+++ b/lib/Serialization/ASTReader.cpp
@@ -3487,10 +3487,9 @@ bool ASTReader::readASTFileControlBlock(StringRef Filename,
if (Record[0] != VERSION_MAJOR)
return true;
- const std::string &CurBranch = getClangFullRepositoryVersion();
- if (StringRef(CurBranch) != Blob)
+ if (Listener.ReadFullVersionInformation(Blob))
return true;
-
+
break;
}
case LANGUAGE_OPTIONS:
diff --git a/lib/Serialization/ModuleManager.cpp b/lib/Serialization/ModuleManager.cpp
index 193a38b973..f3d53adafa 100644
--- a/lib/Serialization/ModuleManager.cpp
+++ b/lib/Serialization/ModuleManager.cpp
@@ -29,7 +29,19 @@ using namespace serialization;
ModuleFile *ModuleManager::lookup(StringRef Name) {
const FileEntry *Entry = FileMgr.getFile(Name, /*openFile=*/false,
/*cacheFailure=*/false);
- return Modules[Entry];
+ if (Entry)
+ return lookup(Entry);
+
+ return 0;
+}
+
+ModuleFile *ModuleManager::lookup(const FileEntry *File) {
+ llvm::DenseMap<const FileEntry *, ModuleFile *>::iterator Known
+ = Modules.find(File);
+ if (Known == Modules.end())
+ return 0;
+
+ return Known->second;
}
llvm::MemoryBuffer *ModuleManager::lookupBuffer(StringRef Name) {