[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