Skip to content

Commit 4468808

Browse files
authored
Merge pull request #83841 from artemcm/ReEnableVisibleOnlyModuleOverlayDeps
[Dependency Scanning] Re-enable querying Swift Overlays only for visible Clang modules
2 parents 4fabc61 + 986e605 commit 4468808

File tree

2 files changed

+4
-26
lines changed

2 files changed

+4
-26
lines changed

lib/DependencyScan/ModuleDependencyScanner.cpp

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -563,23 +563,6 @@ ModuleDependencyScanner::ModuleDependencyScanner(
563563
DependencyTracker, CAS, ActionCache, PrefixMapper.get(), Diagnostics));
564564
}
565565

566-
/// Find all of the imported Clang modules starting with the given module name.
567-
static void findAllImportedClangModules(StringRef moduleName,
568-
const ModuleDependenciesCache &cache,
569-
llvm::StringSet<> &allModules) {
570-
if (!allModules.insert(moduleName).second)
571-
return;
572-
573-
auto moduleID =
574-
ModuleDependencyID{moduleName.str(), ModuleDependencyKind::Clang};
575-
auto optionalDependencies = cache.findDependency(moduleID);
576-
if (!optionalDependencies.has_value())
577-
return;
578-
579-
for (const auto &dep : cache.getAllClangDependencies(moduleID))
580-
findAllImportedClangModules(dep.ModuleName, cache, allModules);
581-
}
582-
583566
static std::set<ModuleDependencyID>
584567
collectBinarySwiftDeps(const ModuleDependenciesCache &cache) {
585568
std::set<ModuleDependencyID> binarySwiftModuleDepIDs;
@@ -1467,11 +1450,7 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependenciesForModule(
14671450
ModuleDependencyIDSetVector &swiftOverlayDependencies) {
14681451
PrettyStackTraceStringAction trace(
14691452
"Resolving Swift Overlay dependencies of module", moduleID.ModuleName);
1470-
llvm::StringSet<> allClangDependencies;
1471-
1472-
// Find all of the discovered Clang modules that this module depends on.
1473-
for (const auto &dep : cache.getAllClangDependencies(moduleID))
1474-
findAllImportedClangModules(dep.ModuleName, cache, allClangDependencies);
1453+
auto visibleClangDependencies = cache.getVisibleClangModules(moduleID);
14751454

14761455
llvm::StringMap<SwiftModuleScannerQueryResult> swiftOverlayLookupResult;
14771456
std::mutex lookupResultLock;
@@ -1502,7 +1481,7 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependenciesForModule(
15021481
};
15031482

15041483
// Enque asynchronous lookup tasks
1505-
for (const auto &clangDep : allClangDependencies)
1484+
for (const auto &clangDep : visibleClangDependencies)
15061485
ScanningThreadPool.async(scanForSwiftDependency,
15071486
getModuleImportIdentifier(clangDep.getKey().str()));
15081487
ScanningThreadPool.wait();
@@ -1531,7 +1510,7 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependenciesForModule(
15311510
lookupResult.incompatibleCandidates, cache, std::nullopt);
15321511
}
15331512
};
1534-
for (const auto &clangDep : allClangDependencies)
1513+
for (const auto &clangDep : visibleClangDependencies)
15351514
recordResult(clangDep.getKey().str());
15361515

15371516
// C++ Interop requires additional handling
@@ -1564,7 +1543,7 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependenciesForModule(
15641543
lookupCxxStdLibOverlay = false;
15651544

15661545
if (lookupCxxStdLibOverlay) {
1567-
for (const auto &clangDepNameEntry : allClangDependencies) {
1546+
for (const auto &clangDepNameEntry : visibleClangDependencies) {
15681547
auto clangDepName = clangDepNameEntry.getKey().str();
15691548

15701549
// If this Clang module is a part of the C++ stdlib, and we haven't

test/ScanDependencies/module_deps_swift_overlay_only_visible.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// REQUIRES: rdar157603647
21
// RUN: %empty-directory(%t)
32
// RUN: %empty-directory(%t/clang-module-cache)
43
// RUN: %empty-directory(%t/swiftDeps)

0 commit comments

Comments
 (0)