diff options
author | kadir çetinkaya <kadircet@google.com> | 2024-11-21 12:11:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-21 12:11:41 +0100 |
commit | bdd10d9d249bd1c2a45e3de56a5accd97e953458 (patch) | |
tree | 5d4c81d8e95dfcecaae9fec5e6a52845fd3023d5 /clang/lib/Frontend/CompilerInstance.cpp | |
parent | 83c7784c35918ce037823f29d29918c5542cdf9c (diff) | |
download | llvm-bdd10d9d249bd1c2a45e3de56a5accd97e953458.zip llvm-bdd10d9d249bd1c2a45e3de56a5accd97e953458.tar.gz llvm-bdd10d9d249bd1c2a45e3de56a5accd97e953458.tar.bz2 |
[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)
Starting with 41e3919ded78d8870f7c95e9181c7f7e29aa3cc4 DiagnosticsEngine
creation might perform IO. It was implicitly defaulting to
getRealFileSystem. This patch makes it explicit by pushing the decision
making to callers.
It uses ambient VFS if one is available, and keeps using
`getRealFileSystem` if there aren't any VFS.
Diffstat (limited to 'clang/lib/Frontend/CompilerInstance.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index ecc6782..fbfc305 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -332,23 +332,20 @@ static void SetupSerializedDiagnostics(DiagnosticOptions *DiagOpts, } } -void CompilerInstance::createDiagnostics(DiagnosticConsumer *Client, +void CompilerInstance::createDiagnostics(llvm::vfs::FileSystem &VFS, + DiagnosticConsumer *Client, bool ShouldOwnClient) { - Diagnostics = createDiagnostics( - &getDiagnosticOpts(), Client, ShouldOwnClient, &getCodeGenOpts(), - FileMgr ? FileMgr->getVirtualFileSystemPtr() : nullptr); + Diagnostics = createDiagnostics(VFS, &getDiagnosticOpts(), Client, + ShouldOwnClient, &getCodeGenOpts()); } IntrusiveRefCntPtr<DiagnosticsEngine> CompilerInstance::createDiagnostics( - DiagnosticOptions *Opts, DiagnosticConsumer *Client, bool ShouldOwnClient, - const CodeGenOptions *CodeGenOpts, - llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS) { + llvm::vfs::FileSystem &VFS, DiagnosticOptions *Opts, + DiagnosticConsumer *Client, bool ShouldOwnClient, + const CodeGenOptions *CodeGenOpts) { IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs()); - IntrusiveRefCntPtr<DiagnosticsEngine> - Diags(new DiagnosticsEngine(DiagID, Opts)); - - if (!VFS) - VFS = llvm::vfs::getRealFileSystem(); + IntrusiveRefCntPtr<DiagnosticsEngine> Diags( + new DiagnosticsEngine(DiagID, Opts)); // Create the diagnostic client for reporting errors or for // implementing -verify. @@ -372,7 +369,7 @@ IntrusiveRefCntPtr<DiagnosticsEngine> CompilerInstance::createDiagnostics( Opts->DiagnosticSerializationFile); // Configure our handling of diagnostics. - ProcessWarningOptions(*Diags, *Opts, *VFS); + ProcessWarningOptions(*Diags, *Opts, VFS); return Diags; } @@ -1240,9 +1237,10 @@ compileModuleImpl(CompilerInstance &ImportingInstance, SourceLocation ImportLoc, auto &Inv = *Invocation; Instance.setInvocation(std::move(Invocation)); - Instance.createDiagnostics(new ForwardingDiagnosticConsumer( - ImportingInstance.getDiagnosticClient()), - /*ShouldOwnClient=*/true); + Instance.createDiagnostics( + ImportingInstance.getVirtualFileSystem(), + new ForwardingDiagnosticConsumer(ImportingInstance.getDiagnosticClient()), + /*ShouldOwnClient=*/true); if (llvm::is_contained(DiagOpts.SystemHeaderWarningsModules, ModuleName)) Instance.getDiagnostics().setSuppressSystemWarnings(false); |