[clang] 6dc059a - [clang][diagtool] Remove dependency on clangDriver from diagtool (#190076)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 10 15:14:20 PDT 2026
Author: Naveen Seth Hanig
Date: 2026-04-11T00:14:15+02:00
New Revision: 6dc059ac3c7ce9f81f4a7cd694b4b68a836dce0f
URL: https://github.com/llvm/llvm-project/commit/6dc059ac3c7ce9f81f4a7cd694b4b68a836dce0f
DIFF: https://github.com/llvm/llvm-project/commit/6dc059ac3c7ce9f81f4a7cd694b4b68a836dce0f.diff
LOG: [clang][diagtool] Remove dependency on clangDriver from diagtool (#190076)
Added:
Modified:
clang/tools/diagtool/CMakeLists.txt
clang/tools/diagtool/ShowEnabledWarnings.cpp
Removed:
################################################################################
diff --git a/clang/tools/diagtool/CMakeLists.txt b/clang/tools/diagtool/CMakeLists.txt
index 09b2a81790f87..b49619c075c73 100644
--- a/clang/tools/diagtool/CMakeLists.txt
+++ b/clang/tools/diagtool/CMakeLists.txt
@@ -15,6 +15,5 @@ add_clang_tool(diagtool
clang_target_link_libraries(diagtool
PRIVATE
clangBasic
- clangDriver
clangFrontend
)
diff --git a/clang/tools/diagtool/ShowEnabledWarnings.cpp b/clang/tools/diagtool/ShowEnabledWarnings.cpp
index 5b25e656dafa4..a0c593a3a9105 100644
--- a/clang/tools/diagtool/ShowEnabledWarnings.cpp
+++ b/clang/tools/diagtool/ShowEnabledWarnings.cpp
@@ -9,8 +9,8 @@
#include "DiagTool.h"
#include "DiagnosticNames.h"
#include "clang/Basic/LLVM.h"
-#include "clang/Driver/CreateInvocationFromArgs.h"
#include "clang/Frontend/CompilerInstance.h"
+#include "clang/Frontend/CompilerInvocation.h"
#include "clang/Frontend/TextDiagnosticBuffer.h"
#include "clang/Frontend/TextDiagnosticPrinter.h"
#include "clang/Frontend/Utils.h"
@@ -56,36 +56,26 @@ static char getCharForLevel(DiagnosticsEngine::Level Level) {
static IntrusiveRefCntPtr<DiagnosticsEngine>
createDiagnostics(unsigned int argc, char **argv) {
- DiagnosticOptions DiagOpts;
-
// Buffer diagnostics from argument parsing so that we can output them using a
// well formed diagnostic object.
TextDiagnosticBuffer *DiagsBuffer = new TextDiagnosticBuffer;
- // Try to build a CompilerInvocation.
+ // Try to build the diagnostics parser
SmallVector<const char *, 4> Args;
Args.push_back("diagtool");
Args.append(argv, argv + argc);
- CreateInvocationOptions CIOpts;
- CIOpts.Diags = llvm::makeIntrusiveRefCnt<DiagnosticsEngine>(
- DiagnosticIDs::create(), DiagOpts, DiagsBuffer);
- std::unique_ptr<CompilerInvocation> Invocation =
- createInvocation(Args, CIOpts);
- if (!Invocation)
- return nullptr;
-
- // Build the diagnostics parser
- IntrusiveRefCntPtr<DiagnosticsEngine> FinalDiags =
+ auto DiagOpts = CreateAndPopulateDiagOpts(Args);
+ IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
- Invocation->getDiagnosticOpts());
- if (!FinalDiags)
+ *DiagOpts);
+ if (!Diags)
return nullptr;
// Flush any errors created when initializing everything. This could happen
// for invalid command lines, which will probably give non-sensical results.
- DiagsBuffer->FlushDiagnostics(*FinalDiags);
+ DiagsBuffer->FlushDiagnostics(*Diags);
- return FinalDiags;
+ return Diags;
}
int ShowEnabledWarnings::run(unsigned int argc, char **argv, raw_ostream &Out) {
More information about the cfe-commits
mailing list