[clang] [clang] Stop parsing warning suppression mappings in driver (PR #125722)

kadir çetinkaya via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 6 01:01:27 PST 2025


https://github.com/kadircet updated https://github.com/llvm/llvm-project/pull/125722

>From 4b24e73d39da9ad9badb2411363082a44046fc3f Mon Sep 17 00:00:00 2001
From: Kadir Cetinkaya <kadircet at google.com>
Date: Tue, 4 Feb 2025 17:45:55 +0100
Subject: [PATCH] [clang] Stop parsing warning suppression mappings in driver

This gets rid of some extra IO from driver startup, and possiblity of
emitting warnings twice.
---
 .../test/Driver/warning-suppression-mappings-not-parsed.cpp  | 5 +++++
 clang/tools/driver/driver.cpp                                | 4 ++++
 2 files changed, 9 insertions(+)
 create mode 100644 clang/test/Driver/warning-suppression-mappings-not-parsed.cpp

diff --git a/clang/test/Driver/warning-suppression-mappings-not-parsed.cpp b/clang/test/Driver/warning-suppression-mappings-not-parsed.cpp
new file mode 100644
index 000000000000000..8f52fb1c6cc7d6c
--- /dev/null
+++ b/clang/test/Driver/warning-suppression-mappings-not-parsed.cpp
@@ -0,0 +1,5 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: echo '[unknown-warning]' > %t/foo.txt
+// RUN: %clang -fdriver-only --warning-suppression-mappings=%t/foo.txt %s | FileCheck -allow-empty %s
+// CHECK-NOT: unknown warning option 'unknown-warning'
diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp
index 74923247b7ee169..00c00cea16f470f 100644
--- a/clang/tools/driver/driver.cpp
+++ b/clang/tools/driver/driver.cpp
@@ -318,6 +318,10 @@ int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContext) {
 
   IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts =
       CreateAndPopulateDiagOpts(Args);
+  // Driver's diagnostics don't use suppression mappings, so don't bother
+  // parsing them. CC1 still receives full args, so this doesn't impact other
+  // actions.
+  DiagOpts->DiagnosticSuppressionMappingsFile.clear();
 
   TextDiagnosticPrinter *DiagClient
     = new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);



More information about the cfe-commits mailing list