diff --git a/lib/Serialization/SerializedModuleLoader.cpp b/lib/Serialization/SerializedModuleLoader.cpp index 8aca189d454b5..93288b423e063 100644 --- a/lib/Serialization/SerializedModuleLoader.cpp +++ b/lib/Serialization/SerializedModuleLoader.cpp @@ -196,18 +196,20 @@ void SerializedModuleLoaderBase::collectVisibleTopLevelModuleNamesImpl( bool requireTargetSpecificModule = Ctx.LangOpts.Target.isOSDarwin(); forEachDirectoryEntryPath(searchPath, [&](StringRef path) { auto pathExt = llvm::sys::path::extension(path); - if (requireTargetSpecificModule) { - if (pathExt != moduleSuffix) - return; - if (!checkTargetFiles(path)) + + if (pathExt != moduleSuffix) + if (requireTargetSpecificModule || pathExt != suffix) return; - } else { - if (suffix != pathExt) + + if (!checkTargetFiles(path)) { + if (requireTargetSpecificModule) return; + auto stat = fs.status(path); if (!stat || stat->isDirectory()) return; } + // Extract module name. auto name = llvm::sys::path::filename(path).drop_back(pathExt.size()); names.push_back(Ctx.getIdentifier(name));