@@ -33,7 +33,8 @@ using swift::version::Version;
33
33
34
34
namespace {
35
35
36
- // / Apply \c body for each target-specific module file base name to search.
36
+ // / Apply \c body for each target-specific module file base name to search from
37
+ // / most to least desiable.
37
38
void forEachTargetModuleBasename (const ASTContext &Ctx,
38
39
llvm::function_ref<void (StringRef)> body) {
39
40
auto normalizedTarget = getTargetSpecificModuleTriple (Ctx.LangOpts .Target );
@@ -373,8 +374,11 @@ SerializedModuleLoaderBase::findModule(AccessPathElem moduleID,
373
374
ModuleFilenamePair fileNames (moduleName);
374
375
375
376
SmallVector<ModuleFilenamePair, 4 > targetFileNamePairs;
377
+ SmallString<32 > primaryTargetSpecificName;
376
378
forEachTargetModuleBasename (Ctx, [&](StringRef targetName) {
377
379
targetFileNamePairs.emplace_back (targetName);
380
+ if (primaryTargetSpecificName.empty ())
381
+ primaryTargetSpecificName = targetName;
378
382
});
379
383
380
384
auto &fs = *Ctx.SourceMgr .getFileSystem ();
@@ -400,9 +404,8 @@ SerializedModuleLoaderBase::findModule(AccessPathElem moduleID,
400
404
401
405
// We can only get here if all targetFileNamePairs failed with
402
406
// 'std::errc::no_such_file_or_directory'.
403
- auto normalizedTarget = getTargetSpecificModuleTriple (Ctx.LangOpts .Target );
404
407
if (maybeDiagnoseTargetMismatch (moduleID.second , moduleName,
405
- normalizedTarget. str () , currPath)) {
408
+ primaryTargetSpecificName , currPath)) {
406
409
return false ;
407
410
} else {
408
411
return None;
0 commit comments