Skip to content

Commit 54294e7

Browse files
committed
[Dependency Scanning] Do not re-query a given clang module identifier more than once
During parallel clang module dependency resolution, an unintended side-effect of swiftlang#84929 is that we stopped uniquing the module identifiers we query to the Clang dependency scanner. This change ensures we do not query the same identifier more than once. Resolves rdar://165133617
1 parent 896e1fb commit 54294e7

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

lib/DependencyScan/ModuleDependencyScanner.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,17 +1113,20 @@ void ModuleDependencyScanner::performParallelClangModuleLookup(
11131113
};
11141114

11151115
// Enque asynchronous lookup tasks
1116+
llvm::StringSet<> queriedIdentifiers;
11161117
for (const auto &unresolvedImports : unresolvedImportsMap)
11171118
for (const auto &unresolvedImportInfo : unresolvedImports.second)
1118-
ScanningThreadPool.async(
1119-
scanForClangModuleDependency,
1120-
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
1119+
if (queriedIdentifiers.insert(unresolvedImportInfo.importIdentifier).second)
1120+
ScanningThreadPool.async(
1121+
scanForClangModuleDependency,
1122+
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
11211123

11221124
for (const auto &unresolvedImports : unresolvedOptionalImportsMap)
11231125
for (const auto &unresolvedImportInfo : unresolvedImports.second)
1124-
ScanningThreadPool.async(
1125-
scanForClangModuleDependency,
1126-
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
1126+
if (queriedIdentifiers.insert(unresolvedImportInfo.importIdentifier).second)
1127+
ScanningThreadPool.async(
1128+
scanForClangModuleDependency,
1129+
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
11271130

11281131
ScanningThreadPool.wait();
11291132
}

0 commit comments

Comments
 (0)