diff options
author | Ben Langmuir <blangmuir@apple.com> | 2014-05-30 17:54:59 +0000 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2014-05-30 17:54:59 +0000 |
commit | e45b4e328f841eb58e9198179946d1e5ae509e5c (patch) | |
tree | 4ab4a630fd2653f8f8ff150f585546ea9863cf86 /clang/lib/Serialization/ModuleManager.cpp | |
parent | 04b9c70da6be729bd828f0d3e41b91b945591814 (diff) | |
download | bcm5719-llvm-e45b4e328f841eb58e9198179946d1e5ae509e5c.tar.gz bcm5719-llvm-e45b4e328f841eb58e9198179946d1e5ae509e5c.zip |
Revert "Invalidate the file system cache entries for files that may rebuild"
This reverts commit r209910, which is breaking some of the bots.
llvm-svn: 209911
Diffstat (limited to 'clang/lib/Serialization/ModuleManager.cpp')
-rw-r--r-- | clang/lib/Serialization/ModuleManager.cpp | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp index 7b687261437..5613d372d20 100644 --- a/clang/lib/Serialization/ModuleManager.cpp +++ b/clang/lib/Serialization/ModuleManager.cpp @@ -135,32 +135,19 @@ ModuleManager::addModule(StringRef FileName, ModuleKind Type, return NewModule? NewlyLoaded : AlreadyLoaded; } -static void invalidateFileCacheForFileAndImporters( - ModuleFile *F, FileManager &FileMgr, - llvm::SmallPtrSetImpl<ModuleFile *> &VictimSet) { - assert(VictimSet.count(F) && "removeModules() missing ancestor of module " - "that failed to load"); - FileMgr.invalidateCache(F->File); - F->File = nullptr; - for (ModuleFile *Importer : F->ImportedBy) - invalidateFileCacheForFileAndImporters(Importer, FileMgr, VictimSet); -} - void ModuleManager::removeModules(ModuleIterator first, ModuleIterator last, ModuleMap *modMap) { if (first == last) return; + // The first file entry is about to be rebuilt (or there was an error), so + // there should be no references to it. Remove it from the cache to close it, + // as Windows doesn't seem to allow renaming over an open file. + FileMgr.invalidateCache((*first)->File); + // Collect the set of module file pointers that we'll be removing. llvm::SmallPtrSet<ModuleFile *, 4> victimSet(first, last); - // The last module file caused the load failure, so it and its ancestors in - // the module dependency tree will be rebuilt (or there was an error), so - // there should be no references to them. Remove them from the cache, - // since rebuilding them will create new files at the old locations. - invalidateFileCacheForFileAndImporters(*(last-1), FileMgr, victimSet); - assert((*first)->File == nullptr && "non-dependent module loaded"); - // Remove any references to the now-destroyed modules. for (unsigned i = 0, n = Chain.size(); i != n; ++i) { Chain[i]->ImportedBy.remove_if([&](ModuleFile *MF) { |