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) { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
