diff options
Diffstat (limited to 'lib/Lex/HeaderSearch.cpp')
-rw-r--r-- | lib/Lex/HeaderSearch.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/Lex/HeaderSearch.cpp b/lib/Lex/HeaderSearch.cpp index 5cf65cbb0d..bc18d0dba7 100644 --- a/lib/Lex/HeaderSearch.cpp +++ b/lib/Lex/HeaderSearch.cpp @@ -99,15 +99,24 @@ const HeaderMap *HeaderSearch::CreateHeaderMap(const FileEntry *FE) { } const FileEntry *HeaderSearch::lookupModule(StringRef ModuleName, + std::string *ModuleFileName, std::string *UmbrellaHeader) { // If we don't have a module cache path, we can't do anything. - if (ModuleCachePath.empty()) + if (ModuleCachePath.empty()) { + if (ModuleFileName) + ModuleFileName->clear(); return 0; - + } + // Try to find the module path. llvm::SmallString<256> FileName(ModuleCachePath); llvm::sys::path::append(FileName, ModuleName + ".pcm"); - if (const FileEntry *ModuleFile = getFileMgr().getFile(FileName)) + if (ModuleFileName) + *ModuleFileName = FileName.str(); + + if (const FileEntry *ModuleFile + = getFileMgr().getFile(FileName, /*OpenFile=*/false, + /*CacheFailure=*/false)) return ModuleFile; // We didn't find the module. If we're not supposed to look for an |