CodaFi updated this revision to Diff 285868.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D85981/new/
https://reviews.llvm.org/D85981
Files:
clang/include/clang/Serialization/ModuleManager.h
clang/lib/Serialization/ModuleManager.cpp
Index: clang/lib/Serialization/ModuleManager.cpp
===================================================================
--- clang/lib/Serialization/ModuleManager.cpp
+++ clang/lib/Serialization/ModuleManager.cpp
@@ -59,7 +59,7 @@
}
ModuleFile *ModuleManager::lookup(const FileEntry *File) const {
- auto Known = Modules.find(File);
+ auto Known = Modules.find(File->getName());
if (Known == Modules.end())
return nullptr;
@@ -133,7 +133,8 @@
}
// Check whether we already loaded this module, before
- if (ModuleFile *ModuleEntry = Modules.lookup(Entry)) {
+ auto EntryKey = Entry ? Entry->getName() : FileName;
+ if (ModuleFile *ModuleEntry = Modules.lookup(EntryKey)) {
// Check the stored signature.
if (checkSignature(ModuleEntry->Signature, ExpectedSignature, ErrorStr))
return OutOfDate;
@@ -208,7 +209,7 @@
return OutOfDate;
// We're keeping this module. Store it everywhere.
- Module = Modules[Entry] = NewModule.get();
+ Module = Modules[EntryKey] = NewModule.get();
updateModuleImports(*NewModule, ImportedBy, ImportLoc);
@@ -255,7 +256,7 @@
// Delete the modules and erase them from the various structures.
for (ModuleIterator victim = First; victim != Last; ++victim) {
- Modules.erase(victim->File);
+ Modules.erase(victim->File->getName());
if (modMap) {
StringRef ModuleName = victim->ModuleName;
Index: clang/include/clang/Serialization/ModuleManager.h
===================================================================
--- clang/include/clang/Serialization/ModuleManager.h
+++ clang/include/clang/Serialization/ModuleManager.h
@@ -59,8 +59,8 @@
// to implement short-circuiting logic when running DFS over the
dependencies.
SmallVector<ModuleFile *, 2> Roots;
- /// All loaded modules, indexed by name.
- llvm::DenseMap<const FileEntry *, ModuleFile *> Modules;
+ /// All loaded modules, indexed by file name.
+ llvm::StringMap<ModuleFile *> Modules;
/// FileManager that handles translating between filenames and
/// FileEntry *.
Index: clang/lib/Serialization/ModuleManager.cpp
===================================================================
--- clang/lib/Serialization/ModuleManager.cpp
+++ clang/lib/Serialization/ModuleManager.cpp
@@ -59,7 +59,7 @@
}
ModuleFile *ModuleManager::lookup(const FileEntry *File) const {
- auto Known = Modules.find(File);
+ auto Known = Modules.find(File->getName());
if (Known == Modules.end())
return nullptr;
@@ -133,7 +133,8 @@
}
// Check whether we already loaded this module, before
- if (ModuleFile *ModuleEntry = Modules.lookup(Entry)) {
+ auto EntryKey = Entry ? Entry->getName() : FileName;
+ if (ModuleFile *ModuleEntry = Modules.lookup(EntryKey)) {
// Check the stored signature.
if (checkSignature(ModuleEntry->Signature, ExpectedSignature, ErrorStr))
return OutOfDate;
@@ -208,7 +209,7 @@
return OutOfDate;
// We're keeping this module. Store it everywhere.
- Module = Modules[Entry] = NewModule.get();
+ Module = Modules[EntryKey] = NewModule.get();
updateModuleImports(*NewModule, ImportedBy, ImportLoc);
@@ -255,7 +256,7 @@
// Delete the modules and erase them from the various structures.
for (ModuleIterator victim = First; victim != Last; ++victim) {
- Modules.erase(victim->File);
+ Modules.erase(victim->File->getName());
if (modMap) {
StringRef ModuleName = victim->ModuleName;
Index: clang/include/clang/Serialization/ModuleManager.h
===================================================================
--- clang/include/clang/Serialization/ModuleManager.h
+++ clang/include/clang/Serialization/ModuleManager.h
@@ -59,8 +59,8 @@
// to implement short-circuiting logic when running DFS over the dependencies.
SmallVector<ModuleFile *, 2> Roots;
- /// All loaded modules, indexed by name.
- llvm::DenseMap<const FileEntry *, ModuleFile *> Modules;
+ /// All loaded modules, indexed by file name.
+ llvm::StringMap<ModuleFile *> Modules;
/// FileManager that handles translating between filenames and
/// FileEntry *.
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits