File tree Expand file tree Collapse file tree 3 files changed +12
-18
lines changed Expand file tree Collapse file tree 3 files changed +12
-18
lines changed Original file line number Diff line number Diff line change @@ -336,7 +336,8 @@ class CompilerInstance {
336
336
std::unique_ptr<ASTContext> Context;
337
337
std::unique_ptr<SILModule> TheSILModule;
338
338
339
- DependencyTracker *DepTracker = nullptr ;
339
+ // / Null if no tracker.
340
+ std::unique_ptr<DependencyTracker> DepTracker;
340
341
341
342
ModuleDecl *MainModule = nullptr ;
342
343
SerializedModuleLoader *SML = nullptr ;
@@ -408,13 +409,11 @@ class CompilerInstance {
408
409
Diagnostics.addConsumer (*DC);
409
410
}
410
411
411
- void setDependencyTracker (DependencyTracker *DT ) {
412
+ void createDependencyTracker ( ) {
412
413
assert (!Context && " must be called before setup()" );
413
- DepTracker = DT;
414
- }
415
- DependencyTracker *getDependencyTracker () {
416
- return DepTracker;
414
+ DepTracker = llvm::make_unique<DependencyTracker>();
417
415
}
416
+ DependencyTracker *getDependencyTracker () { return DepTracker.get (); }
418
417
419
418
// / Set the SIL module for this compilation instance.
420
419
// /
Original file line number Diff line number Diff line change @@ -197,10 +197,10 @@ bool CompilerInstance::setUpModuleLoaders() {
197
197
Context->addModuleLoader (SourceLoader::create (*Context,
198
198
!immediate,
199
199
enableResilience,
200
- DepTracker ));
200
+ getDependencyTracker () ));
201
201
}
202
202
{
203
- auto SML = SerializedModuleLoader::create (*Context, DepTracker );
203
+ auto SML = SerializedModuleLoader::create (*Context, getDependencyTracker () );
204
204
this ->SML = SML.get ();
205
205
Context->addModuleLoader (std::move (SML));
206
206
}
@@ -210,7 +210,7 @@ bool CompilerInstance::setUpModuleLoaders() {
210
210
// knowledge.
211
211
auto clangImporter =
212
212
ClangImporter::create (*Context, Invocation.getClangImporterOptions (),
213
- Invocation.getPCHHash (), DepTracker );
213
+ Invocation.getPCHHash (), getDependencyTracker () );
214
214
if (!clangImporter) {
215
215
Diagnostics.diagnose (SourceLoc (), diag::error_clang_importer_create_fail);
216
216
return true ;
Original file line number Diff line number Diff line change @@ -1756,15 +1756,10 @@ int swift::performFrontend(ArrayRef<const char *> Args,
1756
1756
enableDiagnosticVerifier (Instance->getSourceMgr ());
1757
1757
}
1758
1758
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 ();
1768
1763
1769
1764
if (Instance->setup (Invocation)) {
1770
1765
return finishDiagProcessing (1 );
You can’t perform that action at this time.
0 commit comments