[clang-tools-extra] df9a14d - Reapply "[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)"
Kadir Cetinkaya via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 21 05:55:41 PST 2024
Author: Kadir Cetinkaya
Date: 2024-11-21T14:55:30+01:00
New Revision: df9a14d7bbf1180e4f1474254c9d7ed6bcb4ce55
URL: https://github.com/llvm/llvm-project/commit/df9a14d7bbf1180e4f1474254c9d7ed6bcb4ce55
DIFF: https://github.com/llvm/llvm-project/commit/df9a14d7bbf1180e4f1474254c9d7ed6bcb4ce55.diff
LOG: Reapply "[NFC] Explicitly pass a VFS when creating DiagnosticsEngine (#115852)"
This reverts commit a1153cd6fedd4c906a9840987934ca4712e34cb2 with fixes
to lldb breakages.
Fixes https://github.com/llvm/llvm-project/issues/117145.
Added:
Modified:
clang-tools-extra/clang-include-fixer/IncludeFixer.cpp
clang-tools-extra/clangd/Compiler.cpp
clang-tools-extra/clangd/ModulesBuilder.cpp
clang-tools-extra/clangd/Preamble.cpp
clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
clang/include/clang/Frontend/CompilerInstance.h
clang/lib/Frontend/CompilerInstance.cpp
clang/lib/Frontend/CreateInvocationFromCommandLine.cpp
clang/lib/Frontend/Rewrite/FrontendActions.cpp
clang/lib/Interpreter/Interpreter.cpp
clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp
clang/lib/Testing/TestAST.cpp
clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
clang/lib/Tooling/Tooling.cpp
clang/tools/c-index-test/core_main.cpp
clang/tools/clang-import-test/clang-import-test.cpp
clang/tools/clang-installapi/ClangInstallAPI.cpp
clang/tools/clang-scan-deps/ClangScanDeps.cpp
clang/tools/diagtool/ShowEnabledWarnings.cpp
clang/tools/driver/cc1_main.cpp
clang/tools/libclang/CIndex.cpp
clang/tools/libclang/Indexing.cpp
clang/unittests/AST/ExternalASTSourceTest.cpp
clang/unittests/CodeGen/TestCompiler.h
clang/unittests/Driver/DXCModeTest.cpp
clang/unittests/Driver/ToolChainTest.cpp
clang/unittests/Frontend/ASTUnitTest.cpp
clang/unittests/Frontend/CodeGenActionTest.cpp
clang/unittests/Frontend/CompilerInstanceTest.cpp
clang/unittests/Frontend/CompilerInvocationTest.cpp
clang/unittests/Frontend/FrontendActionTest.cpp
clang/unittests/Frontend/OutputStreamTest.cpp
clang/unittests/Frontend/PCHPreambleTest.cpp
clang/unittests/Frontend/ReparseWorkingDirTest.cpp
clang/unittests/Frontend/UtilsTest.cpp
clang/unittests/Sema/SemaNoloadLookupTest.cpp
clang/unittests/Serialization/ForceCheckFileInputTest.cpp
clang/unittests/Serialization/ModuleCacheTest.cpp
clang/unittests/Serialization/NoCommentsTest.cpp
clang/unittests/Serialization/PreambleInNamedModulesTest.cpp
clang/unittests/Serialization/VarDeclConstantInitTest.cpp
clang/unittests/Support/TimeProfilerTest.cpp
clang/unittests/Tooling/DependencyScanning/DependencyScannerTest.cpp
clang/unittests/Tooling/ToolingTest.cpp
lldb/source/Commands/CommandObjectTarget.cpp
lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-include-fixer/IncludeFixer.cpp b/clang-tools-extra/clang-include-fixer/IncludeFixer.cpp
index 354f35cbadbeb9..bba8f8acc77da9 100644
--- a/clang-tools-extra/clang-include-fixer/IncludeFixer.cpp
+++ b/clang-tools-extra/clang-include-fixer/IncludeFixer.cpp
@@ -95,7 +95,8 @@ bool IncludeFixerActionFactory::runInvocation(
// Create the compiler's actual diagnostics engine. We want to drop all
// diagnostics here.
- Compiler.createDiagnostics(new clang::IgnoringDiagConsumer,
+ Compiler.createDiagnostics(Files->getVirtualFileSystem(),
+ new clang::IgnoringDiagConsumer,
/*ShouldOwnClient=*/true);
Compiler.createSourceManager(*Files);
diff --git a/clang-tools-extra/clangd/Compiler.cpp b/clang-tools-extra/clangd/Compiler.cpp
index c60ab8e1b8062a..161cc9ae0ca365 100644
--- a/clang-tools-extra/clangd/Compiler.cpp
+++ b/clang-tools-extra/clangd/Compiler.cpp
@@ -110,8 +110,8 @@ buildCompilerInvocation(const ParseInputs &Inputs, clang::DiagnosticConsumer &D,
CIOpts.VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory);
CIOpts.CC1Args = CC1Args;
CIOpts.RecoverOnError = true;
- CIOpts.Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions, &D, false);
+ CIOpts.Diags = CompilerInstance::createDiagnostics(
+ *CIOpts.VFS, new DiagnosticOptions, &D, false);
CIOpts.ProbePrecompiled = false;
std::unique_ptr<CompilerInvocation> CI = createInvocation(ArgStrs, CIOpts);
if (!CI)
@@ -148,7 +148,7 @@ prepareCompilerInstance(std::unique_ptr<clang::CompilerInvocation> CI,
auto Clang = std::make_unique<CompilerInstance>(
std::make_shared<PCHContainerOperations>());
Clang->setInvocation(std::move(CI));
- Clang->createDiagnostics(&DiagsClient, false);
+ Clang->createDiagnostics(*VFS, &DiagsClient, false);
if (auto VFSWithRemapping = createVFSFromCompilerInvocation(
Clang->getInvocation(), Clang->getDiagnostics(), VFS))
diff --git a/clang-tools-extra/clangd/ModulesBuilder.cpp b/clang-tools-extra/clangd/ModulesBuilder.cpp
index 2bce3a20825616..29508901f85bba 100644
--- a/clang-tools-extra/clangd/ModulesBuilder.cpp
+++ b/clang-tools-extra/clangd/ModulesBuilder.cpp
@@ -188,7 +188,8 @@ bool IsModuleFileUpToDate(PathRef ModuleFilePath,
clang::clangd::IgnoreDiagnostics IgnoreDiags;
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions, &IgnoreDiags,
+ CompilerInstance::createDiagnostics(*VFS, new DiagnosticOptions,
+ &IgnoreDiags,
/*ShouldOwnClient=*/false);
LangOptions LangOpts;
diff --git a/clang-tools-extra/clangd/Preamble.cpp b/clang-tools-extra/clangd/Preamble.cpp
index c14c4d1ba103f8..ce88ec0eb88c1b 100644
--- a/clang-tools-extra/clangd/Preamble.cpp
+++ b/clang-tools-extra/clangd/Preamble.cpp
@@ -613,8 +613,9 @@ buildPreamble(PathRef FileName, CompilerInvocation CI,
for (const auto &L : ASTListeners)
L->sawDiagnostic(D, Diag);
});
+ auto VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory);
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> PreambleDiagsEngine =
- CompilerInstance::createDiagnostics(&CI.getDiagnosticOpts(),
+ CompilerInstance::createDiagnostics(*VFS, &CI.getDiagnosticOpts(),
&PreambleDiagnostics,
/*ShouldOwnClient=*/false);
const Config &Cfg = Config::current();
@@ -651,7 +652,6 @@ buildPreamble(PathRef FileName, CompilerInvocation CI,
for (const auto &L : ASTListeners)
L->beforeExecute(CI);
});
- auto VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory);
llvm::SmallString<32> AbsFileName(FileName);
VFS->makeAbsolute(AbsFileName);
auto StatCache = std::make_shared<PreambleFileStatusCache>(AbsFileName);
diff --git a/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp b/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
index b5a7b9720903eb..b1bbb2eb82414c 100644
--- a/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
+++ b/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
@@ -609,15 +609,6 @@ TEST_F(PragmaIncludeTest, ExportInUnnamedBuffer) {
)cpp";
Inputs.ExtraFiles["foo.h"] = "";
- auto Clang = std::make_unique<CompilerInstance>(
- std::make_shared<PCHContainerOperations>());
- Clang->createDiagnostics();
-
- Clang->setInvocation(std::make_unique<CompilerInvocation>());
- ASSERT_TRUE(CompilerInvocation::CreateFromArgs(
- Clang->getInvocation(), {Filename.data()}, Clang->getDiagnostics(),
- "clang"));
-
// Create unnamed memory buffers for all the files.
auto VFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
VFS->addFile(Filename, /*ModificationTime=*/0,
@@ -626,6 +617,16 @@ TEST_F(PragmaIncludeTest, ExportInUnnamedBuffer) {
VFS->addFile(Extra.getKey(), /*ModificationTime=*/0,
llvm::MemoryBuffer::getMemBufferCopy(Extra.getValue(),
/*BufferName=*/""));
+
+ auto Clang = std::make_unique<CompilerInstance>(
+ std::make_shared<PCHContainerOperations>());
+ Clang->createDiagnostics(*VFS);
+
+ Clang->setInvocation(std::make_unique<CompilerInvocation>());
+ ASSERT_TRUE(CompilerInvocation::CreateFromArgs(
+ Clang->getInvocation(), {Filename.data()}, Clang->getDiagnostics(),
+ "clang"));
+
auto *FM = Clang->createFileManager(VFS);
ASSERT_TRUE(Clang->ExecuteAction(*Inputs.MakeAction()));
EXPECT_THAT(
diff --git a/clang/include/clang/Frontend/CompilerInstance.h b/clang/include/clang/Frontend/CompilerInstance.h
index 338eb3c6bd028d..1220a4e29471d1 100644
--- a/clang/include/clang/Frontend/CompilerInstance.h
+++ b/clang/include/clang/Frontend/CompilerInstance.h
@@ -675,13 +675,17 @@ class CompilerInstance : public ModuleLoader {
/// Note that this routine also replaces the diagnostic client,
/// allocating one if one is not provided.
///
+ /// \param VFS is used for any IO needed when creating DiagnosticsEngine. It
+ /// doesn't replace VFS in the CompilerInstance (if any).
+ ///
/// \param Client If non-NULL, a diagnostic client that will be
/// attached to (and, then, owned by) the DiagnosticsEngine inside this AST
/// unit.
///
/// \param ShouldOwnClient If Client is non-NULL, specifies whether
/// the diagnostic object should take ownership of the client.
- void createDiagnostics(DiagnosticConsumer *Client = nullptr,
+ void createDiagnostics(llvm::vfs::FileSystem &VFS,
+ DiagnosticConsumer *Client = nullptr,
bool ShouldOwnClient = true);
/// Create a DiagnosticsEngine object with a the TextDiagnosticPrinter.
@@ -702,10 +706,11 @@ class CompilerInstance : public ModuleLoader {
/// used by some diagnostics printers (for logging purposes only).
///
/// \return The new object on success, or null on failure.
- static IntrusiveRefCntPtr<DiagnosticsEngine> createDiagnostics(
- DiagnosticOptions *Opts, DiagnosticConsumer *Client = nullptr,
- bool ShouldOwnClient = true, const CodeGenOptions *CodeGenOpts = nullptr,
- IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr);
+ static IntrusiveRefCntPtr<DiagnosticsEngine>
+ createDiagnostics(llvm::vfs::FileSystem &VFS, DiagnosticOptions *Opts,
+ DiagnosticConsumer *Client = nullptr,
+ bool ShouldOwnClient = true,
+ const CodeGenOptions *CodeGenOpts = nullptr);
/// Create the file manager and replace any existing one with it.
///
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
index ecc6782c7cb4fb..fbfc305ca06a04 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);
diff --git a/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp b/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp
index 638757a2450240..d0b855fff2534c 100644
--- a/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp
+++ b/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp
@@ -22,6 +22,7 @@
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Option/ArgList.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/Host.h"
using namespace clang;
using namespace llvm::opt;
@@ -32,7 +33,9 @@ clang::createInvocation(ArrayRef<const char *> ArgList,
assert(!ArgList.empty());
auto Diags = Opts.Diags
? std::move(Opts.Diags)
- : CompilerInstance::createDiagnostics(new DiagnosticOptions);
+ : CompilerInstance::createDiagnostics(
+ Opts.VFS ? *Opts.VFS : *llvm::vfs::getRealFileSystem(),
+ new DiagnosticOptions);
SmallVector<const char *, 16> Args(ArgList);
diff --git a/clang/lib/Frontend/Rewrite/FrontendActions.cpp b/clang/lib/Frontend/Rewrite/FrontendActions.cpp
index 6e1f949f543a51..5d2e1d78770959 100644
--- a/clang/lib/Frontend/Rewrite/FrontendActions.cpp
+++ b/clang/lib/Frontend/Rewrite/FrontendActions.cpp
@@ -247,6 +247,7 @@ class RewriteIncludesAction::RewriteImportsListener : public ASTReaderListener {
Instance.setInvocation(
std::make_shared<CompilerInvocation>(CI.getInvocation()));
Instance.createDiagnostics(
+ CI.getVirtualFileSystem(),
new ForwardingDiagnosticConsumer(CI.getDiagnosticClient()),
/*ShouldOwnClient=*/true);
Instance.getFrontendOpts().DisableFree = false;
diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp
index 94f0156ec151fb..5dc67f6375098f 100644
--- a/clang/lib/Interpreter/Interpreter.cpp
+++ b/clang/lib/Interpreter/Interpreter.cpp
@@ -15,6 +15,7 @@
#include "IncrementalExecutor.h"
#include "IncrementalParser.h"
#include "InterpreterUtils.h"
+#include "llvm/Support/VirtualFileSystem.h"
#ifdef __EMSCRIPTEN__
#include "Wasm.h"
#endif // __EMSCRIPTEN__
@@ -106,7 +107,7 @@ CreateCI(const llvm::opt::ArgStringList &Argv) {
CompilerInvocation::GetResourcesPath(Argv[0], nullptr);
// Create the actual diagnostics engine.
- Clang->createDiagnostics();
+ Clang->createDiagnostics(*llvm::vfs::getRealFileSystem());
if (!Clang->hasDiagnostics())
return llvm::createStringError(llvm::errc::not_supported,
"Initialization failed. "
diff --git a/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp b/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp
index ae11fbbe32b762..168c73df393ffa 100644
--- a/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp
+++ b/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp
@@ -78,6 +78,7 @@ void ModelInjector::onBodySynthesis(const NamedDecl *D) {
CompilerInstance Instance(CI.getPCHContainerOperations());
Instance.setInvocation(std::move(Invocation));
Instance.createDiagnostics(
+ CI.getVirtualFileSystem(),
new ForwardingDiagnosticConsumer(CI.getDiagnosticClient()),
/*ShouldOwnClient=*/true);
diff --git a/clang/lib/Testing/TestAST.cpp b/clang/lib/Testing/TestAST.cpp
index fe8b93851613dd..f7348aa068c51b 100644
--- a/clang/lib/Testing/TestAST.cpp
+++ b/clang/lib/Testing/TestAST.cpp
@@ -55,7 +55,7 @@ class StoreDiagnostics : public DiagnosticConsumer {
// Provides "empty" ASTContext etc if we fail before parsing gets started.
void createMissingComponents(CompilerInstance &Clang) {
if (!Clang.hasDiagnostics())
- Clang.createDiagnostics();
+ Clang.createDiagnostics(*llvm::vfs::getRealFileSystem());
if (!Clang.hasFileManager())
Clang.createFileManager();
if (!Clang.hasSourceManager())
@@ -82,9 +82,24 @@ TestAST::TestAST(const TestInputs &In) {
auto RecoverFromEarlyExit =
llvm::make_scope_exit([&] { createMissingComponents(*Clang); });
+ std::string Filename = In.FileName;
+ if (Filename.empty())
+ Filename = getFilenameForTesting(In.Language).str();
+
+ // Set up a VFS with only the virtual file visible.
+ auto VFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
+ if (auto Err = VFS->setCurrentWorkingDirectory(In.WorkingDir))
+ ADD_FAILURE() << "Failed to setWD: " << Err.message();
+ VFS->addFile(Filename, /*ModificationTime=*/0,
+ llvm::MemoryBuffer::getMemBufferCopy(In.Code, Filename));
+ for (const auto &Extra : In.ExtraFiles)
+ VFS->addFile(
+ Extra.getKey(), /*ModificationTime=*/0,
+ llvm::MemoryBuffer::getMemBufferCopy(Extra.getValue(), Extra.getKey()));
+
// Extra error conditions are reported through diagnostics, set that up first.
bool ErrorOK = In.ErrorOK || llvm::StringRef(In.Code).contains("error-ok");
- Clang->createDiagnostics(new StoreDiagnostics(Diagnostics, !ErrorOK));
+ Clang->createDiagnostics(*VFS, new StoreDiagnostics(Diagnostics, !ErrorOK));
// Parse cc1 argv, (typically [-std=c++20 input.cc]) into CompilerInvocation.
std::vector<const char *> Argv;
@@ -93,9 +108,6 @@ TestAST::TestAST(const TestInputs &In) {
Argv.push_back(S.c_str());
for (const auto &S : In.ExtraArgs)
Argv.push_back(S.c_str());
- std::string Filename = In.FileName;
- if (Filename.empty())
- Filename = getFilenameForTesting(In.Language).str();
Argv.push_back(Filename.c_str());
Clang->setInvocation(std::make_unique<CompilerInvocation>());
if (!CompilerInvocation::CreateFromArgs(Clang->getInvocation(), Argv,
@@ -105,16 +117,6 @@ TestAST::TestAST(const TestInputs &In) {
}
assert(!Clang->getInvocation().getFrontendOpts().DisableFree);
- // Set up a VFS with only the virtual file visible.
- auto VFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
- if (auto Err = VFS->setCurrentWorkingDirectory(In.WorkingDir))
- ADD_FAILURE() << "Failed to setWD: " << Err.message();
- VFS->addFile(Filename, /*ModificationTime=*/0,
- llvm::MemoryBuffer::getMemBufferCopy(In.Code, Filename));
- for (const auto &Extra : In.ExtraFiles)
- VFS->addFile(
- Extra.getKey(), /*ModificationTime=*/0,
- llvm::MemoryBuffer::getMemBufferCopy(Extra.getValue(), Extra.getKey()));
Clang->createFileManager(VFS);
// Running the FrontendAction creates the other components: SourceManager,
diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
index fd1b7af0600da7..5a648df05e4fd3 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
@@ -322,7 +322,8 @@ class DependencyScanningAction : public tooling::ToolAction {
// Create the compiler's actual diagnostics engine.
sanitizeDiagOpts(ScanInstance.getDiagnosticOpts());
- ScanInstance.createDiagnostics(DiagConsumer, /*ShouldOwnClient=*/false);
+ ScanInstance.createDiagnostics(DriverFileMgr->getVirtualFileSystem(),
+ DiagConsumer, /*ShouldOwnClient=*/false);
if (!ScanInstance.hasDiagnostics())
return false;
@@ -650,7 +651,7 @@ bool DependencyScanningWorker::computeDependencies(
auto DiagOpts = CreateAndPopulateDiagOpts(FinalCCommandLine);
sanitizeDiagOpts(*DiagOpts);
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(DiagOpts.release(), &DC,
+ CompilerInstance::createDiagnostics(*FinalFS, DiagOpts.release(), &DC,
/*ShouldOwnClient=*/false);
// Although `Diagnostics` are used only for command-line parsing, the
diff --git a/clang/lib/Tooling/Tooling.cpp b/clang/lib/Tooling/Tooling.cpp
index ffacf9cf1f7829..88b7349ce8fed6 100644
--- a/clang/lib/Tooling/Tooling.cpp
+++ b/clang/lib/Tooling/Tooling.cpp
@@ -387,7 +387,8 @@ bool ToolInvocation::run() {
TextDiagnosticPrinter DiagnosticPrinter(llvm::errs(), DiagOpts);
IntrusiveRefCntPtr<DiagnosticsEngine> Diagnostics =
CompilerInstance::createDiagnostics(
- &*DiagOpts, DiagConsumer ? DiagConsumer : &DiagnosticPrinter, false);
+ Files->getVirtualFileSystem(), &*DiagOpts,
+ DiagConsumer ? DiagConsumer : &DiagnosticPrinter, false);
// Although `Diagnostics` are used only for command-line parsing, the custom
// `DiagConsumer` might expect a `SourceManager` to be present.
SourceManager SrcMgr(*Diagnostics, *Files);
@@ -456,7 +457,8 @@ bool FrontendActionFactory::runInvocation(
std::unique_ptr<FrontendAction> ScopedToolAction(create());
// Create the compiler's actual diagnostics engine.
- Compiler.createDiagnostics(DiagConsumer, /*ShouldOwnClient=*/false);
+ Compiler.createDiagnostics(Files->getVirtualFileSystem(), DiagConsumer,
+ /*ShouldOwnClient=*/false);
if (!Compiler.hasDiagnostics())
return false;
@@ -652,7 +654,8 @@ class ASTBuilderAction : public ToolAction {
DiagnosticConsumer *DiagConsumer) override {
std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromCompilerInvocation(
Invocation, std::move(PCHContainerOps),
- CompilerInstance::createDiagnostics(&Invocation->getDiagnosticOpts(),
+ CompilerInstance::createDiagnostics(Files->getVirtualFileSystem(),
+ &Invocation->getDiagnosticOpts(),
DiagConsumer,
/*ShouldOwnClient=*/false),
Files);
diff --git a/clang/tools/c-index-test/core_main.cpp b/clang/tools/c-index-test/core_main.cpp
index c43bff21962118..327a77a09408ba 100644
--- a/clang/tools/c-index-test/core_main.cpp
+++ b/clang/tools/c-index-test/core_main.cpp
@@ -25,6 +25,7 @@
#include "llvm/Support/Program.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/StringSaver.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
using namespace clang;
@@ -219,8 +220,9 @@ static bool printSourceSymbols(const char *Executable,
SmallVector<const char *, 4> ArgsWithProgName;
ArgsWithProgName.push_back(Executable);
ArgsWithProgName.append(Args.begin(), Args.end());
- IntrusiveRefCntPtr<DiagnosticsEngine>
- Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions));
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ new DiagnosticOptions));
CreateInvocationOptions CIOpts;
CIOpts.Diags = Diags;
CIOpts.ProbePrecompiled = true; // FIXME: historical default. Needed?
@@ -273,7 +275,8 @@ static bool printSourceSymbolsFromModule(StringRef modulePath,
auto HSOpts = std::make_shared<HeaderSearchOptions>();
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ new DiagnosticOptions());
std::unique_ptr<ASTUnit> AU =
ASTUnit::LoadFromASTFile(modulePath, *pchRdr, ASTUnit::LoadASTOnly, Diags,
FileSystemOpts, HSOpts, /*LangOpts=*/nullptr,
diff --git a/clang/tools/clang-import-test/clang-import-test.cpp b/clang/tools/clang-import-test/clang-import-test.cpp
index 2473e16a546dc0..41a8a63a2e22be 100644
--- a/clang/tools/clang-import-test/clang-import-test.cpp
+++ b/clang/tools/clang-import-test/clang-import-test.cpp
@@ -31,6 +31,7 @@
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/Signals.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/Host.h"
#include <memory>
@@ -164,7 +165,8 @@ std::unique_ptr<CompilerInstance> BuildCompilerInstance() {
auto Ins = std::make_unique<CompilerInstance>();
auto DC = std::make_unique<TestDiagnosticConsumer>();
const bool ShouldOwnClient = true;
- Ins->createDiagnostics(DC.release(), ShouldOwnClient);
+ Ins->createDiagnostics(*llvm::vfs::getRealFileSystem(), DC.release(),
+ ShouldOwnClient);
auto Inv = std::make_unique<CompilerInvocation>();
diff --git a/clang/tools/clang-installapi/ClangInstallAPI.cpp b/clang/tools/clang-installapi/ClangInstallAPI.cpp
index 308e5285e32578..ce6240b1b56f1e 100644
--- a/clang/tools/clang-installapi/ClangInstallAPI.cpp
+++ b/clang/tools/clang-installapi/ClangInstallAPI.cpp
@@ -113,7 +113,7 @@ static bool run(ArrayRef<const char *> Args, const char *ProgName) {
// Set up compilation.
std::unique_ptr<CompilerInstance> CI(new CompilerInstance());
CI->setFileManager(FM.get());
- CI->createDiagnostics();
+ CI->createDiagnostics(FM->getVirtualFileSystem());
if (!CI->hasDiagnostics())
return EXIT_FAILURE;
diff --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp b/clang/tools/clang-scan-deps/ClangScanDeps.cpp
index 9b30799c3ab263..58b56dcfd3bece 100644
--- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp
+++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp
@@ -29,6 +29,7 @@
#include "llvm/Support/ThreadPool.h"
#include "llvm/Support/Threading.h"
#include "llvm/Support/Timer.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/Host.h"
#include <mutex>
#include <optional>
@@ -424,7 +425,8 @@ class FullDeps {
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions{};
TextDiagnosticPrinter DiagConsumer(ErrOS, &*DiagOpts);
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(&*DiagOpts, &DiagConsumer,
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ &*DiagOpts, &DiagConsumer,
/*ShouldOwnClient=*/false);
for (auto &&M : Modules)
@@ -739,7 +741,8 @@ getCompilationDatabase(int argc, char **argv, std::string &ErrorMessage) {
tooling::JSONCommandLineSyntax::AutoDetect);
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions);
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ new DiagnosticOptions);
driver::Driver TheDriver(CommandLine[0], llvm::sys::getDefaultTargetTriple(),
*Diags);
TheDriver.setCheckInputsExist(false);
diff --git a/clang/tools/diagtool/ShowEnabledWarnings.cpp b/clang/tools/diagtool/ShowEnabledWarnings.cpp
index 66a295db054c35..48bed7c828c16b 100644
--- a/clang/tools/diagtool/ShowEnabledWarnings.cpp
+++ b/clang/tools/diagtool/ShowEnabledWarnings.cpp
@@ -14,6 +14,7 @@
#include "clang/Frontend/TextDiagnosticPrinter.h"
#include "clang/Frontend/Utils.h"
#include "llvm/Support/TargetSelect.h"
+#include "llvm/Support/VirtualFileSystem.h"
DEF_DIAGTOOL("show-enabled",
"Show which warnings are enabled for a given command line",
@@ -74,7 +75,8 @@ createDiagnostics(unsigned int argc, char **argv) {
// Build the diagnostics parser
IntrusiveRefCntPtr<DiagnosticsEngine> FinalDiags =
- CompilerInstance::createDiagnostics(&Invocation->getDiagnosticOpts());
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ &Invocation->getDiagnosticOpts());
if (!FinalDiags)
return nullptr;
diff --git a/clang/tools/driver/cc1_main.cpp b/clang/tools/driver/cc1_main.cpp
index 554dc956c7cfe3..d14058ff2c723d 100644
--- a/clang/tools/driver/cc1_main.cpp
+++ b/clang/tools/driver/cc1_main.cpp
@@ -45,6 +45,7 @@
#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/TimeProfiler.h"
#include "llvm/Support/Timer.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/TargetParser/AArch64TargetParser.h"
@@ -264,7 +265,7 @@ int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {
CompilerInvocation::GetResourcesPath(Argv0, MainAddr);
// Create the actual diagnostics engine.
- Clang->createDiagnostics();
+ Clang->createDiagnostics(*llvm::vfs::getRealFileSystem());
if (!Clang->hasDiagnostics())
return 1;
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index cec6f026fccfd8..def4524449355a 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -59,6 +59,7 @@
#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/Threading.h"
#include "llvm/Support/Timer.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/thread.h"
#include <mutex>
@@ -4092,7 +4093,8 @@ enum CXErrorCode clang_createTranslationUnit2(CXIndex CIdx,
auto HSOpts = std::make_shared<HeaderSearchOptions>();
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ new DiagnosticOptions());
std::unique_ptr<ASTUnit> AU = ASTUnit::LoadFromASTFile(
ast_filename, CXXIdx->getPCHContainerOperations()->getRawReader(),
ASTUnit::LoadEverything, Diags, FileSystemOpts, HSOpts,
@@ -4165,7 +4167,8 @@ clang_parseTranslationUnit_Impl(CXIndex CIdx, const char *source_filename,
std::unique_ptr<DiagnosticOptions> DiagOpts = CreateAndPopulateDiagOpts(
llvm::ArrayRef(command_line_args, num_command_line_args));
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
- CompilerInstance::createDiagnostics(DiagOpts.release()));
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ DiagOpts.release()));
if (options & CXTranslationUnit_KeepGoing)
Diags->setFatalsAsError(true);
diff --git a/clang/tools/libclang/Indexing.cpp b/clang/tools/libclang/Indexing.cpp
index 05d88452209fb3..b890921972a0a7 100644
--- a/clang/tools/libclang/Indexing.cpp
+++ b/clang/tools/libclang/Indexing.cpp
@@ -29,6 +29,7 @@
#include "clang/Lex/PreprocessorOptions.h"
#include "llvm/Support/CrashRecoveryContext.h"
#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include <cstdio>
#include <mutex>
#include <utility>
@@ -479,10 +480,10 @@ static CXErrorCode clang_indexSourceFile_Impl(
CaptureDiag = new CaptureDiagnosticConsumer();
// Configure the diagnostics.
- IntrusiveRefCntPtr<DiagnosticsEngine>
- Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions,
- CaptureDiag,
- /*ShouldOwnClient=*/true));
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ new DiagnosticOptions, CaptureDiag,
+ /*ShouldOwnClient=*/true));
// Recover resources if we crash before exiting this function.
llvm::CrashRecoveryContextCleanupRegistrar<DiagnosticsEngine,
diff --git a/clang/unittests/AST/ExternalASTSourceTest.cpp b/clang/unittests/AST/ExternalASTSourceTest.cpp
index 8b70be664e043c..8e1bde1247f660 100644
--- a/clang/unittests/AST/ExternalASTSourceTest.cpp
+++ b/clang/unittests/AST/ExternalASTSourceTest.cpp
@@ -10,13 +10,14 @@
//
//===----------------------------------------------------------------------===//
+#include "clang/AST/ExternalASTSource.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
-#include "clang/AST/ExternalASTSource.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/CompilerInvocation.h"
#include "clang/Frontend/FrontendActions.h"
#include "clang/Lex/PreprocessorOptions.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "gtest/gtest.h"
using namespace clang;
@@ -46,7 +47,7 @@ class TestFrontendAction : public ASTFrontendAction {
bool testExternalASTSource(ExternalASTSource *Source,
StringRef FileContents) {
CompilerInstance Compiler;
- Compiler.createDiagnostics();
+ Compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
auto Invocation = std::make_shared<CompilerInvocation>();
Invocation->getPreprocessorOpts().addRemappedFile(
diff --git a/clang/unittests/CodeGen/TestCompiler.h b/clang/unittests/CodeGen/TestCompiler.h
index 891489cb511a4f..931c75effbf754 100644
--- a/clang/unittests/CodeGen/TestCompiler.h
+++ b/clang/unittests/CodeGen/TestCompiler.h
@@ -20,6 +20,7 @@
#include "llvm/IR/Constants.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/Host.h"
namespace llvm {
@@ -35,7 +36,7 @@ struct TestCompiler {
clang::CodeGenOptions CGO = clang::CodeGenOptions()) {
compiler.getLangOpts() = LO;
compiler.getCodeGenOpts() = CGO;
- compiler.createDiagnostics();
+ compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
std::string TrStr = llvm::Triple::normalize(llvm::sys::getProcessTriple());
llvm::Triple Tr(TrStr);
diff --git a/clang/unittests/Driver/DXCModeTest.cpp b/clang/unittests/Driver/DXCModeTest.cpp
index 2a079a62f1bc13..616c07c0d389d1 100644
--- a/clang/unittests/Driver/DXCModeTest.cpp
+++ b/clang/unittests/Driver/DXCModeTest.cpp
@@ -219,7 +219,8 @@ TEST(DxcModeTest, DefaultEntry) {
const char *Args[] = {"clang", "--driver-mode=dxc", "-Tcs_6_7", "foo.hlsl"};
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ CompilerInstance::createDiagnostics(*InMemoryFileSystem,
+ new DiagnosticOptions());
CreateInvocationOptions CIOpts;
CIOpts.Diags = Diags;
diff --git a/clang/unittests/Driver/ToolChainTest.cpp b/clang/unittests/Driver/ToolChainTest.cpp
index 8542a168f93c27..0787e7d2d33391 100644
--- a/clang/unittests/Driver/ToolChainTest.cpp
+++ b/clang/unittests/Driver/ToolChainTest.cpp
@@ -577,7 +577,7 @@ TEST(CompilerInvocation, SplitSwarfSingleCrash) {
TEST(ToolChainTest, UEFICallingConventionTest) {
clang::CompilerInstance compiler;
- compiler.createDiagnostics();
+ compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
std::string TrStr = "x86_64-unknown-uefi";
llvm::Triple Tr(TrStr);
diff --git a/clang/unittests/Frontend/ASTUnitTest.cpp b/clang/unittests/Frontend/ASTUnitTest.cpp
index bd5d5d00981807..e6524a019871dc 100644
--- a/clang/unittests/Frontend/ASTUnitTest.cpp
+++ b/clang/unittests/Frontend/ASTUnitTest.cpp
@@ -17,6 +17,7 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/ToolOutputFile.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "gtest/gtest.h"
using namespace llvm;
@@ -41,17 +42,18 @@ class ASTUnitTest : public ::testing::Test {
const char *Args[] = {"clang", "-xc++", InputFileName.c_str()};
- Diags = CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ auto VFS = llvm::vfs::getRealFileSystem();
+ Diags = CompilerInstance::createDiagnostics(*VFS, new DiagnosticOptions());
CreateInvocationOptions CIOpts;
CIOpts.Diags = Diags;
+ CIOpts.VFS = VFS;
CInvok = createInvocation(Args, std::move(CIOpts));
if (!CInvok)
return nullptr;
- FileManager *FileMgr =
- new FileManager(FileSystemOptions(), vfs::getRealFileSystem());
+ FileManager *FileMgr = new FileManager(FileSystemOptions(), VFS);
PCHContainerOps = std::make_shared<PCHContainerOperations>();
return ASTUnit::LoadFromCompilerInvocation(
@@ -134,7 +136,8 @@ TEST_F(ASTUnitTest, ModuleTextualHeader) {
const char *Args[] = {"clang", "test.cpp", "-fmodule-map-file=m.modulemap",
"-fmodule-name=M"};
- Diags = CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ Diags =
+ CompilerInstance::createDiagnostics(*InMemoryFs, new DiagnosticOptions());
CreateInvocationOptions CIOpts;
CIOpts.Diags = Diags;
CInvok = createInvocation(Args, std::move(CIOpts));
@@ -162,7 +165,8 @@ TEST_F(ASTUnitTest, LoadFromCommandLineEarlyError) {
const char *Args[] = {"clang", "-target", "foobar", InputFileName.c_str()};
- auto Diags = CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ auto Diags = CompilerInstance::createDiagnostics(
+ *llvm::vfs::getRealFileSystem(), new DiagnosticOptions());
auto PCHContainerOps = std::make_shared<PCHContainerOperations>();
std::unique_ptr<clang::ASTUnit> ErrUnit;
@@ -189,7 +193,8 @@ TEST_F(ASTUnitTest, LoadFromCommandLineWorkingDirectory) {
const char *Args[] = {"clang", "-working-directory", WorkingDir.c_str(),
InputFileName.c_str()};
- auto Diags = CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ auto Diags = CompilerInstance::createDiagnostics(
+ *llvm::vfs::getRealFileSystem(), new DiagnosticOptions());
auto PCHContainerOps = std::make_shared<PCHContainerOperations>();
std::unique_ptr<clang::ASTUnit> ErrUnit;
diff --git a/clang/unittests/Frontend/CodeGenActionTest.cpp b/clang/unittests/Frontend/CodeGenActionTest.cpp
index a6520910c83996..d855302ed05429 100644
--- a/clang/unittests/Frontend/CodeGenActionTest.cpp
+++ b/clang/unittests/Frontend/CodeGenActionTest.cpp
@@ -16,6 +16,7 @@
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Lex/PreprocessorOptions.h"
#include "llvm/Support/FormatVariadic.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "gtest/gtest.h"
using namespace llvm;
@@ -52,7 +53,7 @@ TEST(CodeGenTest, TestNullCodeGen) {
Invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
CompilerInstance Compiler;
Compiler.setInvocation(std::move(Invocation));
- Compiler.createDiagnostics();
+ Compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
EXPECT_TRUE(Compiler.hasDiagnostics());
std::unique_ptr<FrontendAction> Act(new NullCodeGenAction);
@@ -70,7 +71,7 @@ TEST(CodeGenTest, CodeGenFromIRMemBuffer) {
Invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
CompilerInstance Compiler;
Compiler.setInvocation(std::move(Invocation));
- Compiler.createDiagnostics();
+ Compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
EXPECT_TRUE(Compiler.hasDiagnostics());
EmitLLVMOnlyAction Action;
@@ -101,7 +102,7 @@ TEST(CodeGenTest, DebugInfoCWDCodeGen) {
SmallString<256> IRBuffer;
Compiler.setOutputStream(std::make_unique<raw_svector_ostream>(IRBuffer));
Compiler.setInvocation(std::move(Invocation));
- Compiler.createDiagnostics();
+ Compiler.createDiagnostics(*VFS);
Compiler.createFileManager(std::move(VFS));
EmitLLVMAction Action;
diff --git a/clang/unittests/Frontend/CompilerInstanceTest.cpp b/clang/unittests/Frontend/CompilerInstanceTest.cpp
index 5cf548e913cc10..07329eb299e293 100644
--- a/clang/unittests/Frontend/CompilerInstanceTest.cpp
+++ b/clang/unittests/Frontend/CompilerInstanceTest.cpp
@@ -13,6 +13,7 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/ToolOutputFile.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "gtest/gtest.h"
using namespace llvm;
@@ -53,7 +54,8 @@ TEST(CompilerInstance, DefaultVFSOverlayFromInvocation) {
const char *Args[] = {"clang", VFSArg.c_str(), "-xc++", "-"};
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
+ CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
+ new DiagnosticOptions());
CreateInvocationOptions CIOpts;
CIOpts.Diags = Diags;
@@ -87,8 +89,9 @@ TEST(CompilerInstance, AllowDiagnosticLogWithUnownedDiagnosticConsumer) {
auto DiagPrinter = std::make_unique<TextDiagnosticPrinter>(
DiagnosticsOS, new DiagnosticOptions());
CompilerInstance Instance;
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags = Instance.createDiagnostics(
- DiagOpts, DiagPrinter.get(), /*ShouldOwnClient=*/false);
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ Instance.createDiagnostics(*llvm::vfs::getRealFileSystem(), DiagOpts,
+ DiagPrinter.get(), /*ShouldOwnClient=*/false);
Diags->Report(diag::err_expected) << "no crash";
ASSERT_EQ(DiagnosticOutput, "error: expected no crash\n");
diff --git a/clang/unittests/Frontend/CompilerInvocationTest.cpp b/clang/unittests/Frontend/CompilerInvocationTest.cpp
index 45478de5e6f7c8..4ff6824f1e21e3 100644
--- a/clang/unittests/Frontend/CompilerInvocationTest.cpp
+++ b/clang/unittests/Frontend/CompilerInvocationTest.cpp
@@ -12,6 +12,7 @@
#include "clang/Frontend/TextDiagnosticBuffer.h"
#include "clang/Lex/PreprocessorOptions.h"
#include "clang/Serialization/ModuleFileExtension.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/Host.h"
#include "gmock/gmock.h"
@@ -38,9 +39,9 @@ class CommandLineTest : public ::testing::Test {
}
CommandLineTest()
- : Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions(),
- new TextDiagnosticBuffer())) {
- }
+ : Diags(CompilerInstance::createDiagnostics(
+ *llvm::vfs::getRealFileSystem(), new DiagnosticOptions(),
+ new TextDiagnosticBuffer())) {}
};
template <typename M>
diff --git a/clang/unittests/Frontend/FrontendActionTest.cpp b/clang/unittests/Frontend/FrontendActionTest.cpp
index 6ce9ba6f6a0888..75e166767c6678 100644
--- a/clang/unittests/Frontend/FrontendActionTest.cpp
+++ b/clang/unittests/Frontend/FrontendActionTest.cpp
@@ -20,6 +20,7 @@
#include "clang/Serialization/InMemoryModuleCache.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/ToolOutputFile.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/Triple.h"
#include "gtest/gtest.h"
@@ -90,7 +91,7 @@ TEST(ASTFrontendAction, Sanity) {
invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
CompilerInstance compiler;
compiler.setInvocation(std::move(invocation));
- compiler.createDiagnostics();
+ compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
TestASTFrontendAction test_action;
ASSERT_TRUE(compiler.ExecuteAction(test_action));
@@ -110,7 +111,7 @@ TEST(ASTFrontendAction, IncrementalParsing) {
invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
CompilerInstance compiler;
compiler.setInvocation(std::move(invocation));
- compiler.createDiagnostics();
+ compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
TestASTFrontendAction test_action(/*enableIncrementalProcessing=*/true);
ASSERT_TRUE(compiler.ExecuteAction(test_action));
@@ -137,7 +138,7 @@ TEST(ASTFrontendAction, LateTemplateIncrementalParsing) {
invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
CompilerInstance compiler;
compiler.setInvocation(std::move(invocation));
- compiler.createDiagnostics();
+ compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
TestASTFrontendAction test_action(/*enableIncrementalProcessing=*/true,
/*actOnEndOfTranslationUnit=*/true);
@@ -183,7 +184,7 @@ TEST(PreprocessorFrontendAction, EndSourceFile) {
Invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
CompilerInstance Compiler;
Compiler.setInvocation(std::move(Invocation));
- Compiler.createDiagnostics();
+ Compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
TestPPCallbacks *Callbacks = new TestPPCallbacks;
TestPPCallbacksFrontendAction TestAction(Callbacks);
@@ -245,7 +246,8 @@ TEST(ASTFrontendAction, ExternalSemaSource) {
CompilerInstance Compiler;
Compiler.setInvocation(std::move(Invocation));
auto *TDC = new TypoDiagnosticConsumer;
- Compiler.createDiagnostics(TDC, /*ShouldOwnClient=*/true);
+ Compiler.createDiagnostics(*llvm::vfs::getRealFileSystem(), TDC,
+ /*ShouldOwnClient=*/true);
Compiler.setExternalSemaSource(new TypoExternalSemaSource(Compiler));
SyntaxOnlyAction TestAction;
@@ -277,7 +279,7 @@ TEST(GeneratePCHFrontendAction, CacheGeneratedPCH) {
Invocation->getTargetOpts().Triple = "x86_64-apple-darwin19.0.0";
CompilerInstance Compiler;
Compiler.setInvocation(std::move(Invocation));
- Compiler.createDiagnostics();
+ Compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
GeneratePCHAction TestAction;
ASSERT_TRUE(Compiler.ExecuteAction(TestAction));
diff --git a/clang/unittests/Frontend/OutputStreamTest.cpp b/clang/unittests/Frontend/OutputStreamTest.cpp
index 2618558c7e11ee..fa5d726d252903 100644
--- a/clang/unittests/Frontend/OutputStreamTest.cpp
+++ b/clang/unittests/Frontend/OutputStreamTest.cpp
@@ -13,6 +13,7 @@
#include "clang/Frontend/TextDiagnosticPrinter.h"
#include "clang/FrontendTool/Utils.h"
#include "clang/Lex/PreprocessorOptions.h"
+#include "llvm/Support/VirtualFileSystem.h"
#include "gtest/gtest.h"
using namespace llvm;
@@ -37,7 +38,7 @@ TEST(FrontendOutputTests, TestOutputStream) {
Compiler.setOutputStream(std::move(IRStream));
Compiler.setInvocation(std::move(Invocation));
- Compiler.createDiagnostics();
+ Compiler.createDiagnostics(*llvm::vfs::getRealFileSystem());
bool Success = ExecuteCompilerInvocation(&Compiler);
EXPECT_TRUE(Success);
@@ -62,6 +63,7 @@ TEST(FrontendOutputTests, TestVerboseOutputStreamShared) {
Compiler.setInvocation(std::move(Invocation));
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
Compiler.createDiagnostics(
+ *llvm::vfs::getRealFileSystem(),
new TextDiagnosticPrinter(llvm::nulls(), &*DiagOpts), true);
Compiler.setVerboseOutputStream(VerboseStream);
@@ -91,6 +93,7 @@ TEST(FrontendOutputTests, TestVerboseOutputStreamOwned) {
Compiler.setInvocation(std::move(Invocation));
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
Compiler.createDiagnostics(
+ *llvm::vfs::getRealFileSystem(),
new TextDiagnosticPrinter(llvm::nulls(), &*DiagOpts), true);
Compiler.setVerboseOutputStream(std::move(VerboseStream));
diff --git a/clang/unittests/Frontend/PCHPreambleTest.cpp b/clang/unittests/Frontend/PCHPreambleTest.cpp
index 2ce24c91ac0f13..58ec2e2ce70589 100644
--- a/clang/unittests/Frontend/PCHPreambleTest.cpp
+++ b/clang/unittests/Frontend/PCHPreambleTest.cpp
@@ -94,8 +94,9 @@ class PCHPreambleTest : public ::testing::Test {
PreprocessorOptions &PPOpts = CI->getPreprocessorOpts();
PPOpts.RemappedFilesKeepOriginalName = true;
- IntrusiveRefCntPtr<DiagnosticsEngine>
- Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions, new DiagnosticConsumer));
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
+ CompilerInstance::createDiagnostics(*VFS, new DiagnosticOptions,
+ new DiagnosticConsumer));
FileManager *FileMgr = new FileManager(FSOpts, VFS);
diff --git a/clang/unittests/Frontend/ReparseWorkingDirTest.cpp b/clang/unittests/Frontend/ReparseWorkingDirTest.cpp
index ca7ce23dd64b22..b0f2d51b80b9e7 100644
--- a/clang/unittests/Frontend/ReparseWorkingDirTest.cpp
+++ b/clang/unittests/Frontend/ReparseWorkingDirTest.cpp
@@ -58,7 +58,7 @@ class ReparseWorkingDirTest : public ::testing::Test {
CI->getTargetOpts().Triple = "i386-unknown-linux-gnu";
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
- CompilerInstance::createDiagnostics(new DiagnosticOptions,
+ CompilerInstance::createDiagnostics(*VFS, new DiagnosticOptions,
new DiagnosticConsumer));
FileManager *FileMgr = new FileManager(CI->getFileSystemOpts(), VFS);
diff --git a/clang/unittests/Frontend/UtilsTest.cpp b/clang/unittests/Frontend/UtilsTest.cpp
index ae014d3f86b5aa..304fbe2a8e69f0 100644
--- a/clang/unittests/Frontend/UtilsTest.cpp
+++ b/clang/unittests/Frontend/UtilsTest.cpp
@@ -28,9 +28,9 @@ TEST(BuildCompilerInvocationTest, RecoverMultipleJobs) {
clang::IgnoringDiagConsumer D;
CreateInvocationOptions Opts;
Opts.RecoverOnError = true;
- Opts.Diags = clang::CompilerInstance::createDiagnostics(new DiagnosticOptions,
- &D, false);
Opts.VFS = new llvm::vfs::InMemoryFileSystem();
+ Opts.Diags = clang::CompilerInstance::createDiagnostics(
+ *Opts.VFS, new DiagnosticOptions, &D, false);
std::unique_ptr<CompilerInvocation> CI = createInvocation(Args, Opts);
ASSERT_TRUE(CI);
EXPECT_THAT(CI->TargetOpts->Triple, testing::StartsWith("i386-"));
@@ -46,7 +46,7 @@ TEST(BuildCompilerInvocationTest, ProbePrecompiled) {
clang::IgnoringDiagConsumer D;
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> CommandLineDiagsEngine =
- clang::CompilerInstance::createDiagnostics(new DiagnosticOptions, &D,
+ clang::CompilerInstance::createDiagnostics(*FS, new DiagnosticOptions, &D,
false);
// Default: ProbePrecompiled=false
CreateInvocationOptions CIOpts;
diff --git a/clang/unittests/Sema/SemaNoloadLookupTest.cpp b/clang/unittests/Sema/SemaNoloadLookupTest.cpp
index cf89c7331e4e0f..a8e1bb0bd2c5de 100644
--- a/clang/unittests/Sema/SemaNoloadLookupTest.cpp
+++ b/clang/unittests/Sema/SemaNoloadLookupTest.cpp
@@ -57,11 +57,12 @@ class NoloadLookupTest : public ::testing::Test {
std::string FileName = llvm::Twine(ModuleName + ".cppm").str();
addFile(FileName, Contents);
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
CreateInvocationOptions CIOpts;
+ CIOpts.VFS = llvm::vfs::getRealFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*CIOpts.VFS,
+ new DiagnosticOptions());
CIOpts.Diags = Diags;
- CIOpts.VFS = llvm::vfs::createPhysicalFileSystem();
std::string CacheBMIPath =
llvm::Twine(TestDir + "/" + ModuleName + ".pcm").str();
diff --git a/clang/unittests/Serialization/ForceCheckFileInputTest.cpp b/clang/unittests/Serialization/ForceCheckFileInputTest.cpp
index ad8892b8c8be1e..6a839d1bf9350b 100644
--- a/clang/unittests/Serialization/ForceCheckFileInputTest.cpp
+++ b/clang/unittests/Serialization/ForceCheckFileInputTest.cpp
@@ -63,12 +63,14 @@ export int aa = 43;
std::string BMIPath = llvm::Twine(TestDir + "/a.pcm").str();
{
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
CreateInvocationOptions CIOpts;
- CIOpts.Diags = Diags;
CIOpts.VFS = llvm::vfs::createPhysicalFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*CIOpts.VFS,
+ new DiagnosticOptions());
+ CIOpts.Diags = Diags;
+
const char *Args[] = {"clang++", "-std=c++20",
"--precompile", "-working-directory",
TestDir.c_str(), "a.cppm"};
@@ -103,11 +105,12 @@ export int aa = 43;
}
{
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
CreateInvocationOptions CIOpts;
- CIOpts.Diags = Diags;
CIOpts.VFS = llvm::vfs::createPhysicalFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*CIOpts.VFS,
+ new DiagnosticOptions());
+ CIOpts.Diags = Diags;
std::string BMIPath = llvm::Twine(TestDir + "/a.pcm").str();
const char *Args[] = {
diff --git a/clang/unittests/Serialization/ModuleCacheTest.cpp b/clang/unittests/Serialization/ModuleCacheTest.cpp
index a7ca98549b4125..6ceee1c6536cb5 100644
--- a/clang/unittests/Serialization/ModuleCacheTest.cpp
+++ b/clang/unittests/Serialization/ModuleCacheTest.cpp
@@ -106,11 +106,11 @@ TEST_F(ModuleCacheTest, CachedModuleNewPath) {
SmallString<256> MCPArg("-fmodules-cache-path=");
MCPArg.append(ModuleCachePath);
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
CreateInvocationOptions CIOpts;
- CIOpts.Diags = Diags;
CIOpts.VFS = llvm::vfs::createPhysicalFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*CIOpts.VFS, new DiagnosticOptions());
+ CIOpts.Diags = Diags;
// First run should pass with no errors
const char *Args[] = {"clang", "-fmodules", "-Fframeworks",
@@ -156,11 +156,11 @@ TEST_F(ModuleCacheTest, CachedModuleNewPathAllowErrors) {
SmallString<256> MCPArg("-fmodules-cache-path=");
MCPArg.append(ModuleCachePath);
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
CreateInvocationOptions CIOpts;
- CIOpts.Diags = Diags;
CIOpts.VFS = llvm::vfs::createPhysicalFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*CIOpts.VFS, new DiagnosticOptions());
+ CIOpts.Diags = Diags;
// First run should pass with no errors
const char *Args[] = {"clang", "-fmodules", "-Fframeworks",
diff --git a/clang/unittests/Serialization/NoCommentsTest.cpp b/clang/unittests/Serialization/NoCommentsTest.cpp
index a0a564aeff9a15..a1fb23404e4154 100644
--- a/clang/unittests/Serialization/NoCommentsTest.cpp
+++ b/clang/unittests/Serialization/NoCommentsTest.cpp
@@ -83,11 +83,11 @@ export module Comments;
void foo() {}
)cpp");
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
CreateInvocationOptions CIOpts;
- CIOpts.Diags = Diags;
CIOpts.VFS = llvm::vfs::createPhysicalFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*CIOpts.VFS, new DiagnosticOptions());
+ CIOpts.Diags = Diags;
std::string CacheBMIPath = llvm::Twine(TestDir + "/Comments.pcm").str();
const char *Args[] = {"clang++", "-std=c++20",
diff --git a/clang/unittests/Serialization/PreambleInNamedModulesTest.cpp b/clang/unittests/Serialization/PreambleInNamedModulesTest.cpp
index d26e1cb633654f..cf317eddb0f373 100644
--- a/clang/unittests/Serialization/PreambleInNamedModulesTest.cpp
+++ b/clang/unittests/Serialization/PreambleInNamedModulesTest.cpp
@@ -75,10 +75,10 @@ export using ::E;
)cpp",
MainFilePath);
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS =
llvm::vfs::createPhysicalFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*VFS, new DiagnosticOptions());
CreateInvocationOptions CIOpts;
CIOpts.Diags = Diags;
diff --git a/clang/unittests/Serialization/VarDeclConstantInitTest.cpp b/clang/unittests/Serialization/VarDeclConstantInitTest.cpp
index 5cbbfb9ff003b3..14c0c30add2078 100644
--- a/clang/unittests/Serialization/VarDeclConstantInitTest.cpp
+++ b/clang/unittests/Serialization/VarDeclConstantInitTest.cpp
@@ -90,11 +90,11 @@ export namespace Fibonacci
}
)cpp");
- IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
- CompilerInstance::createDiagnostics(new DiagnosticOptions());
CreateInvocationOptions CIOpts;
- CIOpts.Diags = Diags;
CIOpts.VFS = llvm::vfs::createPhysicalFileSystem();
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
+ CompilerInstance::createDiagnostics(*CIOpts.VFS, new DiagnosticOptions());
+ CIOpts.Diags = Diags;
const char *Args[] = {"clang++", "-std=c++20",
"--precompile", "-working-directory",
diff --git a/clang/unittests/Support/TimeProfilerTest.cpp b/clang/unittests/Support/TimeProfilerTest.cpp
index 339b470153e64e..995ebf625b7ab2 100644
--- a/clang/unittests/Support/TimeProfilerTest.cpp
+++ b/clang/unittests/Support/TimeProfilerTest.cpp
@@ -45,8 +45,6 @@ std::string teardownProfiler() {
// We only parse AST here. This is enough for constexpr evaluation.
bool compileFromString(StringRef Code, StringRef Standard, StringRef File,
llvm::StringMap<std::string> Headers = {}) {
- CompilerInstance Compiler;
- Compiler.createDiagnostics();
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> FS(
new llvm::vfs::InMemoryFileSystem());
@@ -57,6 +55,8 @@ bool compileFromString(StringRef Code, StringRef Standard, StringRef File,
}
llvm::IntrusiveRefCntPtr<FileManager> Files(
new FileManager(FileSystemOptions(), FS));
+ CompilerInstance Compiler;
+ Compiler.createDiagnostics(Files->getVirtualFileSystem());
Compiler.setFileManager(Files.get());
auto Invocation = std::make_shared<CompilerInvocation>();
diff --git a/clang/unittests/Tooling/DependencyScanning/DependencyScannerTest.cpp b/clang/unittests/Tooling/DependencyScanning/DependencyScannerTest.cpp
index ec0e143be4a209..e1c47708059920 100644
--- a/clang/unittests/Tooling/DependencyScanning/DependencyScannerTest.cpp
+++ b/clang/unittests/Tooling/DependencyScanning/DependencyScannerTest.cpp
@@ -60,7 +60,8 @@ class TestDependencyScanningAction : public tooling::ToolAction {
Compiler.setInvocation(std::move(Invocation));
Compiler.setFileManager(FileMgr);
- Compiler.createDiagnostics(DiagConsumer, /*ShouldOwnClient=*/false);
+ Compiler.createDiagnostics(FileMgr->getVirtualFileSystem(), DiagConsumer,
+ /*ShouldOwnClient=*/false);
if (!Compiler.hasDiagnostics())
return false;
diff --git a/clang/unittests/Tooling/ToolingTest.cpp b/clang/unittests/Tooling/ToolingTest.cpp
index f41a44fa0922a1..0b65577a05193f 100644
--- a/clang/unittests/Tooling/ToolingTest.cpp
+++ b/clang/unittests/Tooling/ToolingTest.cpp
@@ -384,7 +384,8 @@ struct CommandLineExtractorTest : public ::testing::Test {
public:
CommandLineExtractorTest()
: InMemoryFS(new llvm::vfs::InMemoryFileSystem),
- Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions)),
+ Diags(CompilerInstance::createDiagnostics(*InMemoryFS,
+ new DiagnosticOptions)),
Driver("clang", llvm::sys::getDefaultTargetTriple(), *Diags,
"clang LLVM compiler", overlayRealFS(InMemoryFS)) {}
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp
index 6c870bbe331253..307f4f683e3b27 100644
--- a/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/lldb/source/Commands/CommandObjectTarget.cpp
@@ -2200,7 +2200,7 @@ class CommandObjectTargetModulesDumpClangPCMInfo : public CommandObjectParsed {
}
clang::CompilerInstance compiler;
- compiler.createDiagnostics();
+ compiler.createDiagnostics(*FileSystem::Instance().GetVirtualFileSystem());
const char *clang_args[] = {"clang", pcm_path};
compiler.setInvocation(clang::createInvocation(clang_args));
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
index 19d41903ea57be..f1573bae2651b6 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
@@ -780,7 +780,7 @@ ClangExpressionParser::ClangExpressionParser(
SetupTargetOpts(*m_compiler, *target_sp);
// 3. Create and install the target on the compiler.
- m_compiler->createDiagnostics();
+ m_compiler->createDiagnostics(m_compiler->getVirtualFileSystem());
// Limit the number of error diagnostics we emit.
// A value of 0 means no limit for both LLDB and Clang.
m_compiler->getDiagnostics().setErrorLimit(target_sp->GetExprErrorLimit());
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
index a43701cba35374..887db0b8fc575d 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
@@ -706,8 +706,9 @@ ClangModulesDeclVendor::Create(Target &target) {
auto diag_options_up =
clang::CreateAndPopulateDiagOpts(compiler_invocation_argument_cstrs);
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diagnostics_engine =
- clang::CompilerInstance::createDiagnostics(diag_options_up.release(),
- new StoringDiagnosticConsumer);
+ clang::CompilerInstance::createDiagnostics(
+ *FileSystem::Instance().GetVirtualFileSystem(),
+ diag_options_up.release(), new StoringDiagnosticConsumer);
Log *log = GetLog(LLDBLog::Expressions);
LLDB_LOG(log, "ClangModulesDeclVendor's compiler flags {0:$[ ]}",
More information about the cfe-commits
mailing list