@@ -360,9 +360,9 @@ void ModuleFileCache::remove(StringRef ModuleName) {
360360// / Collect the directly and indirectly required module names for \param
361361// / ModuleName in topological order. The \param ModuleName is guaranteed to
362362// / be the last element in \param ModuleNames.
363- llvm::SmallVector<StringRef > getAllRequiredModules (ProjectModules &MDB,
363+ llvm::SmallVector<std::string > getAllRequiredModules (ProjectModules &MDB,
364364 StringRef ModuleName) {
365- llvm::SmallVector<llvm::StringRef > ModuleNames;
365+ llvm::SmallVector<std::string > ModuleNames;
366366 llvm::StringSet<> ModuleNamesSet;
367367
368368 auto VisitDeps = [&](StringRef ModuleName, auto Visitor) -> void {
@@ -373,7 +373,7 @@ llvm::SmallVector<StringRef> getAllRequiredModules(ProjectModules &MDB,
373373 if (ModuleNamesSet.insert (RequiredModuleName).second )
374374 Visitor (RequiredModuleName, Visitor);
375375
376- ModuleNames.push_back (ModuleName);
376+ ModuleNames.push_back (ModuleName. str () );
377377 };
378378 VisitDeps (ModuleName, VisitDeps);
379379
@@ -418,28 +418,30 @@ llvm::Error ModulesBuilder::ModulesBuilderImpl::getOrBuildModuleFile(
418418 // Get Required modules in topological order.
419419 auto ReqModuleNames = getAllRequiredModules (MDB, ModuleName);
420420 for (llvm::StringRef ReqModuleName : ReqModuleNames) {
421- if (BuiltModuleFiles.isModuleUnitBuilt (ModuleName ))
421+ if (BuiltModuleFiles.isModuleUnitBuilt (ReqModuleName ))
422422 continue ;
423423
424424 if (auto Cached = Cache.getModule (ReqModuleName)) {
425425 if (IsModuleFileUpToDate (Cached->getModuleFilePath (), BuiltModuleFiles,
426426 TFS.view (std::nullopt ))) {
427- log (" Reusing module {0} from {1}" , ModuleName ,
427+ log (" Reusing module {0} from {1}" , ReqModuleName ,
428428 Cached->getModuleFilePath ());
429429 BuiltModuleFiles.addModuleFile (std::move (Cached));
430430 continue ;
431431 }
432432 Cache.remove (ReqModuleName);
433433 }
434434
435+ std::string ReqFileName =
436+ MDB.getSourceForModuleName (ReqModuleName);
435437 llvm::Expected<ModuleFile> MF = buildModuleFile (
436- ModuleName, ModuleUnitFileName , getCDB (), TFS, BuiltModuleFiles);
438+ ReqModuleName, ReqFileName , getCDB (), TFS, BuiltModuleFiles);
437439 if (llvm::Error Err = MF.takeError ())
438440 return Err;
439441
440- log (" Built module {0} to {1}" , ModuleName , MF->getModuleFilePath ());
442+ log (" Built module {0} to {1}" , ReqModuleName , MF->getModuleFilePath ());
441443 auto BuiltModuleFile = std::make_shared<const ModuleFile>(std::move (*MF));
442- Cache.add (ModuleName , BuiltModuleFile);
444+ Cache.add (ReqModuleName , BuiltModuleFile);
443445 BuiltModuleFiles.addModuleFile (std::move (BuiltModuleFile));
444446 }
445447
0 commit comments