Skip to content

Commit 7b00603

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 #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 6d4c516 commit 7b00603

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)