[llvm] [third-party] Fix benchmark build error with Clang 22 (PR #184532)

via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 3 17:52:28 PST 2026


https://github.com/zeyi2 created https://github.com/llvm/llvm-project/pull/184532

While running CI, I noticed a build failure:

```log
llvm-project/clang-tools-extra/clangd/benchmarks/IndexBenchmark.cpp:92:1: error: '__COUNTER__' is a C2y extension [-Werror,-Wc2y-extensions]
```

Related link: https://github.com/llvm/llvm-project/pull/184015#issuecomment-3994435400

While `benchmark.h` already had some suppression logic, it didn't cover the macro expansion at call sites.
This patch ensures `IndexBenchmark.cpp` build successfully when compiled with `-pedantic` and `-Werror`.

>From fcd40b3e055522d10de94b47c13319f9464d96d9 Mon Sep 17 00:00:00 2001
From: mtx <mitchell.xu2 at gmail.com>
Date: Wed, 4 Mar 2026 09:48:17 +0800
Subject: [PATCH] [third-party] Fix benchmark build error with Clang 22

---
 third-party/benchmark/include/benchmark/benchmark.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/third-party/benchmark/include/benchmark/benchmark.h b/third-party/benchmark/include/benchmark/benchmark.h
index c2debb216d64f..f5bae6179c557 100644
--- a/third-party/benchmark/include/benchmark/benchmark.h
+++ b/third-party/benchmark/include/benchmark/benchmark.h
@@ -1495,6 +1495,7 @@ BENCHMARK_RESTORE_PEDANTIC_WARNING
   BaseClass##_##Method##_Benchmark
 
 #define BENCHMARK_PRIVATE_DECLARE(n)                                 \
+  BENCHMARK_DISABLE_PEDANTIC_WARNING                                 \
   static ::benchmark::internal::Benchmark* BENCHMARK_PRIVATE_NAME(n) \
       BENCHMARK_UNUSED
 
@@ -1503,12 +1504,14 @@ BENCHMARK_RESTORE_PEDANTIC_WARNING
   BENCHMARK_PRIVATE_DECLARE(_benchmark_) =                           \
       (::benchmark::internal::RegisterBenchmarkInternal(             \
           new ::benchmark::internal::FunctionBenchmark(#__VA_ARGS__, \
-                                                       __VA_ARGS__)))
+                                                       __VA_ARGS__))) \
+  BENCHMARK_RESTORE_PEDANTIC_WARNING
 #else
 #define BENCHMARK(n)                                     \
   BENCHMARK_PRIVATE_DECLARE(n) =                         \
       (::benchmark::internal::RegisterBenchmarkInternal( \
-          new ::benchmark::internal::FunctionBenchmark(#n, n)))
+          new ::benchmark::internal::FunctionBenchmark(#n, n))) \
+  BENCHMARK_RESTORE_PEDANTIC_WARNING
 #endif  // BENCHMARK_HAS_CXX11
 
 // Old-style macros



More information about the llvm-commits mailing list