Skip to content

Commit b426757

Browse files
committed
[Dependency Scanning] Share the Clang Dependency Scanning service among scanner invocations.
It was recently moved to the ModuleDependenciesCache. This is undesireable, instead this should live in the GlobalModuleDependenciesCache so that we benefit from the filesystem caching it performs across diferent scanning actions.
1 parent af276b7 commit b426757

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

include/swift/AST/ModuleDependencies.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,9 @@ class GlobalModuleDependenciesCache {
502502
ModuleDependenciesKindMap ModuleDependenciesMap;
503503
};
504504

505+
/// The 'persistent' Clang dependency scanner service
506+
clang::tooling::dependencies::DependencyScanningService clangScanningService;
507+
505508
/// All cached Swift source module dependencies, in the order in which they were encountered
506509
std::vector<ModuleDependencyID> AllSourceModules;
507510

@@ -616,9 +619,6 @@ class ModuleDependenciesCache {
616619
StringRef mainScanModuleName;
617620
/// Set containing all of the Clang modules that have already been seen.
618621
llvm::StringSet<> alreadySeenClangModules;
619-
/// The 'persistent' Clang dependency scanner service
620-
/// TODO: Share this service among common scanner invocations
621-
clang::tooling::dependencies::DependencyScanningService clangScanningService;
622622
/// The Clang dependency scanner tool
623623
clang::tooling::dependencies::DependencyScanningTool clangScanningTool;
624624

lib/AST/ModuleDependencies.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,15 @@ void ModuleDependencies::addBridgingModuleDependency(
225225
}
226226
}
227227

228-
GlobalModuleDependenciesCache::GlobalModuleDependenciesCache() {}
228+
GlobalModuleDependenciesCache::GlobalModuleDependenciesCache()
229+
: clangScanningService(
230+
clang::tooling::dependencies::ScanningMode::DependencyDirectivesScan,
231+
clang::tooling::dependencies::ScanningOutputFormat::Full,
232+
clang::CASOptions(),
233+
/* Cache */ nullptr,
234+
/* SharedFS */ nullptr,
235+
/* ReuseFileManager */ false,
236+
/* OptimizeArgs */ false) {}
229237
GlobalModuleDependenciesCache::TargetSpecificGlobalCacheState *
230238
GlobalModuleDependenciesCache::getCurrentCache() const {
231239
assert(CurrentTriple.hasValue() &&
@@ -536,15 +544,7 @@ ModuleDependenciesCache::ModuleDependenciesCache(
536544
StringRef mainScanModuleName)
537545
: globalCache(globalCache),
538546
mainScanModuleName(mainScanModuleName),
539-
clangScanningService(
540-
clang::tooling::dependencies::ScanningMode::DependencyDirectivesScan,
541-
clang::tooling::dependencies::ScanningOutputFormat::Full,
542-
clang::CASOptions(),
543-
/* Cache */ nullptr,
544-
/* SharedFS */ nullptr,
545-
/* ReuseFileManager */ false,
546-
/* OptimizeArgs */ false),
547-
clangScanningTool(clangScanningService) {
547+
clangScanningTool(globalCache.clangScanningService) {
548548
for (auto kind = ModuleDependenciesKind::FirstKind;
549549
kind != ModuleDependenciesKind::LastKind; ++kind) {
550550
ModuleDependenciesMap.insert(

0 commit comments

Comments
 (0)