Skip to content

Commit 169d93b

Browse files
author
David Ungar
authored
Merge pull request #16656 from davidungar/add-comment
Clarify ownership of dependency tracker.
2 parents 972fac5 + df4048c commit 169d93b

File tree

3 files changed

+12
-18
lines changed

3 files changed

+12
-18
lines changed

include/swift/Frontend/Frontend.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,8 @@ class CompilerInstance {
336336
std::unique_ptr<ASTContext> Context;
337337
std::unique_ptr<SILModule> TheSILModule;
338338

339-
DependencyTracker *DepTracker = nullptr;
339+
/// Null if no tracker.
340+
std::unique_ptr<DependencyTracker> DepTracker;
340341

341342
ModuleDecl *MainModule = nullptr;
342343
SerializedModuleLoader *SML = nullptr;
@@ -408,13 +409,11 @@ class CompilerInstance {
408409
Diagnostics.addConsumer(*DC);
409410
}
410411

411-
void setDependencyTracker(DependencyTracker *DT) {
412+
void createDependencyTracker() {
412413
assert(!Context && "must be called before setup()");
413-
DepTracker = DT;
414-
}
415-
DependencyTracker *getDependencyTracker() {
416-
return DepTracker;
414+
DepTracker = llvm::make_unique<DependencyTracker>();
417415
}
416+
DependencyTracker *getDependencyTracker() { return DepTracker.get(); }
418417

419418
/// Set the SIL module for this compilation instance.
420419
///

lib/Frontend/Frontend.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,10 @@ bool CompilerInstance::setUpModuleLoaders() {
197197
Context->addModuleLoader(SourceLoader::create(*Context,
198198
!immediate,
199199
enableResilience,
200-
DepTracker));
200+
getDependencyTracker()));
201201
}
202202
{
203-
auto SML = SerializedModuleLoader::create(*Context, DepTracker);
203+
auto SML = SerializedModuleLoader::create(*Context, getDependencyTracker());
204204
this->SML = SML.get();
205205
Context->addModuleLoader(std::move(SML));
206206
}
@@ -210,7 +210,7 @@ bool CompilerInstance::setUpModuleLoaders() {
210210
// knowledge.
211211
auto clangImporter =
212212
ClangImporter::create(*Context, Invocation.getClangImporterOptions(),
213-
Invocation.getPCHHash(), DepTracker);
213+
Invocation.getPCHHash(), getDependencyTracker());
214214
if (!clangImporter) {
215215
Diagnostics.diagnose(SourceLoc(), diag::error_clang_importer_create_fail);
216216
return true;

lib/FrontendTool/FrontendTool.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1756,15 +1756,10 @@ int swift::performFrontend(ArrayRef<const char *> Args,
17561756
enableDiagnosticVerifier(Instance->getSourceMgr());
17571757
}
17581758

1759-
DependencyTracker depTracker;
1760-
{
1761-
const FrontendInputsAndOutputs &io =
1762-
Invocation.getFrontendOptions().InputsAndOutputs;
1763-
if (io.hasDependencyTrackerPath() ||
1764-
!Invocation.getFrontendOptions().IndexStorePath.empty()) {
1765-
Instance->setDependencyTracker(&depTracker);
1766-
}
1767-
}
1759+
if (Invocation.getFrontendOptions()
1760+
.InputsAndOutputs.hasDependencyTrackerPath() ||
1761+
!Invocation.getFrontendOptions().IndexStorePath.empty())
1762+
Instance->createDependencyTracker();
17681763

17691764
if (Instance->setup(Invocation)) {
17701765
return finishDiagProcessing(1);

0 commit comments

Comments
 (0)