@@ -332,20 +332,23 @@ static void SetupSerializedDiagnostics(DiagnosticOptions *DiagOpts,
332332 }
333333}
334334
335- void CompilerInstance::createDiagnostics (llvm::vfs::FileSystem &VFS,
336- DiagnosticConsumer *Client,
335+ void CompilerInstance::createDiagnostics (DiagnosticConsumer *Client,
337336 bool ShouldOwnClient) {
338- Diagnostics = createDiagnostics (VFS, &getDiagnosticOpts (), Client,
339- ShouldOwnClient, &getCodeGenOpts ());
337+ Diagnostics = createDiagnostics (
338+ &getDiagnosticOpts (), Client, ShouldOwnClient, &getCodeGenOpts (),
339+ FileMgr ? FileMgr->getVirtualFileSystemPtr () : nullptr );
340340}
341341
342342IntrusiveRefCntPtr<DiagnosticsEngine> CompilerInstance::createDiagnostics (
343- llvm::vfs::FileSystem &VFS, DiagnosticOptions *Opts ,
344- DiagnosticConsumer *Client, bool ShouldOwnClient ,
345- const CodeGenOptions *CodeGenOpts ) {
343+ DiagnosticOptions *Opts, DiagnosticConsumer *Client, bool ShouldOwnClient ,
344+ const CodeGenOptions *CodeGenOpts ,
345+ llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS ) {
346346 IntrusiveRefCntPtr<DiagnosticIDs> DiagID (new DiagnosticIDs ());
347- IntrusiveRefCntPtr<DiagnosticsEngine> Diags (
348- new DiagnosticsEngine (DiagID, Opts));
347+ IntrusiveRefCntPtr<DiagnosticsEngine>
348+ Diags (new DiagnosticsEngine (DiagID, Opts));
349+
350+ if (!VFS)
351+ VFS = llvm::vfs::getRealFileSystem ();
349352
350353 // Create the diagnostic client for reporting errors or for
351354 // implementing -verify.
@@ -369,7 +372,7 @@ IntrusiveRefCntPtr<DiagnosticsEngine> CompilerInstance::createDiagnostics(
369372 Opts->DiagnosticSerializationFile );
370373
371374 // Configure our handling of diagnostics.
372- ProcessWarningOptions (*Diags, *Opts, VFS);
375+ ProcessWarningOptions (*Diags, *Opts, * VFS);
373376
374377 return Diags;
375378}
@@ -1237,10 +1240,9 @@ compileModuleImpl(CompilerInstance &ImportingInstance, SourceLocation ImportLoc,
12371240 auto &Inv = *Invocation;
12381241 Instance.setInvocation (std::move (Invocation));
12391242
1240- Instance.createDiagnostics (
1241- ImportingInstance.getVirtualFileSystem (),
1242- new ForwardingDiagnosticConsumer (ImportingInstance.getDiagnosticClient ()),
1243- /* ShouldOwnClient=*/ true );
1243+ Instance.createDiagnostics (new ForwardingDiagnosticConsumer (
1244+ ImportingInstance.getDiagnosticClient ()),
1245+ /* ShouldOwnClient=*/ true );
12441246
12451247 if (llvm::is_contained (DiagOpts.SystemHeaderWarningsModules , ModuleName))
12461248 Instance.getDiagnostics ().setSuppressSystemWarnings (false );
0 commit comments