]> granicus.if.org Git - clang/commitdiff
Never cache the result of a module file lookup.
authorDouglas Gregor <dgregor@apple.com>
Fri, 8 Feb 2013 21:27:45 +0000 (21:27 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 8 Feb 2013 21:27:45 +0000 (21:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174744 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/CompilerInstance.cpp
lib/Serialization/GlobalModuleIndex.cpp
lib/Serialization/ModuleManager.cpp

index 0c5a1fa70aa8f2768625a3eefa29eef520c4b7f7..ce6572aa1be86ff41f3f8377fd77d87c1335ef7f 100644 (file)
@@ -996,7 +996,8 @@ CompilerInstance::loadModule(SourceLocation ImportLoc,
 
       BuildingModule = true;
       compileModule(*this, ModuleNameLoc, Module, ModuleFileName);
-      ModuleFile = FileMgr->getFile(ModuleFileName);
+      ModuleFile = FileMgr->getFile(ModuleFileName, /*OpenFile=*/false,
+                                    /*CacheFailure=*/false);
 
       if (!ModuleFile && getPreprocessorOpts().FailedModules)
         getPreprocessorOpts().FailedModules->addFailed(ModuleName);
@@ -1079,14 +1080,14 @@ CompilerInstance::loadModule(SourceLocation ImportLoc,
           << ModuleName
           << SourceRange(ImportLoc, ModuleNameLoc);
         ModuleBuildFailed = true;
-
         return ModuleLoadResult();
       }
 
       compileModule(*this, ModuleNameLoc, Module, ModuleFileName);
 
       // Try loading the module again.
-      ModuleFile = FileMgr->getFile(ModuleFileName);
+      ModuleFile = FileMgr->getFile(ModuleFileName, /*OpenFile=*/false,
+                                    /*CacheFailure=*/false);
       if (!ModuleFile ||
           ModuleManager->ReadAST(ModuleFileName,
                                  serialization::MK_Module, ImportLoc,
index 5b2ab913fa00d26b46355e5c23b53dcd0321cd3c..7d34f85fd8b6ed0959169db3d7592beec6c1145c 100644 (file)
@@ -203,7 +203,8 @@ GlobalModuleIndex::GlobalModuleIndex(FileManager &FileMgr,
         Dependencies(Record.begin() + Idx, Record.begin() + Idx + NumDeps);
 
       // Find the file. If we can't find it, ignore it.
-      const FileEntry *File = FileMgr.getFile(FileName);
+      const FileEntry *File = FileMgr.getFile(FileName, /*openFile=*/false,
+                                              /*cacheFailure=*/false);
       if (!File) {
         AnyOutOfDate = true;
         break;
@@ -635,7 +636,9 @@ bool GlobalModuleIndexBuilder::loadModuleFile(const FileEntry *File) {
         Idx += Length;
 
         // Find the imported module file.
-        const FileEntry *DependsOnFile = FileMgr.getFile(ImportedFile);
+        const FileEntry *DependsOnFile
+          = FileMgr.getFile(ImportedFile, /*openFile=*/false,
+                            /*cacheFailure=*/false);
         if (!DependsOnFile)
           return true;
 
index bc9917b5822757cc0eccd8dcf6a2b599d1297cfb..b9f4d888f30aca0225bf4453a1b835034a003f81 100644 (file)
@@ -25,12 +25,14 @@ using namespace clang;
 using namespace serialization;
 
 ModuleFile *ModuleManager::lookup(StringRef Name) {
-  const FileEntry *Entry = FileMgr.getFile(Name);
+  const FileEntry *Entry = FileMgr.getFile(Name, /*openFile=*/false,
+                                           /*cacheFailure=*/false);
   return Modules[Entry];
 }
 
 llvm::MemoryBuffer *ModuleManager::lookupBuffer(StringRef Name) {
-  const FileEntry *Entry = FileMgr.getFile(Name);
+  const FileEntry *Entry = FileMgr.getFile(Name, /*openFile=*/false,
+                                           /*cacheFailure=*/false);
   return InMemoryBuffers[Entry];
 }
 
@@ -38,7 +40,8 @@ std::pair<ModuleFile *, bool>
 ModuleManager::addModule(StringRef FileName, ModuleKind Type,
                          SourceLocation ImportLoc, ModuleFile *ImportedBy,
                          unsigned Generation, std::string &ErrorStr) {
-  const FileEntry *Entry = FileMgr.getFile(FileName);
+  const FileEntry *Entry = FileMgr.getFile(FileName, /*openFile=*/false,
+                                           /*cacheFailure=*/false);
   if (!Entry && FileName != "-") {
     ErrorStr = "file not found";
     return std::make_pair(static_cast<ModuleFile*>(0), false);