From c19cfee61e136effb05a7fc8a037b0db3b13bd4c Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Mon, 19 Aug 2024 10:39:37 +0700 Subject: [PATCH] Fix C4459: Rename a function parameter `profiler_manager` to avoid hiding the global declaration. (#1839) * Fix C4459: Rename a function parameter `profiler_manager` to avoid hiding the global declaration. * Treat warnings as errors for MSVC * disable one warning for MSVC --- CMakeLists.txt | 4 ++++ include/benchmark/benchmark.h | 8 ++++++++ src/benchmark_runner.cc | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 40ff75844..e0cd6962e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -150,6 +150,10 @@ if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") add_definitions(-D_CRT_SECURE_NO_WARNINGS) + if(BENCHMARK_ENABLE_WERROR) + add_cxx_compiler_flag(-WX) + endif() + if (NOT BENCHMARK_ENABLE_EXCEPTIONS) add_cxx_compiler_flag(-EHs-) add_cxx_compiler_flag(-EHa-) diff --git a/include/benchmark/benchmark.h b/include/benchmark/benchmark.h index 66f34867d..53a22247f 100644 --- a/include/benchmark/benchmark.h +++ b/include/benchmark/benchmark.h @@ -796,6 +796,11 @@ enum Skipped } // namespace internal +#if defined(_MSC_VER) +#pragma warning(push) +// C4324: 'benchmark::State': structure was padded due to alignment specifier +#pragma warning(disable : 4324) +#endif // _MSC_VER_ // State is passed to a running Benchmark and contains state for the // benchmark to use. class BENCHMARK_EXPORT BENCHMARK_INTERNAL_CACHELINE_ALIGNED State { @@ -1063,6 +1068,9 @@ class BENCHMARK_EXPORT BENCHMARK_INTERNAL_CACHELINE_ALIGNED State { friend class internal::BenchmarkInstance; }; +#if defined(_MSC_VER) +#pragma warning(pop) +#endif // _MSC_VER_ inline BENCHMARK_ALWAYS_INLINE bool State::KeepRunning() { return KeepRunningInternal(1, /*is_batch=*/false); diff --git a/src/benchmark_runner.cc b/src/benchmark_runner.cc index a38093937..c658d574c 100644 --- a/src/benchmark_runner.cc +++ b/src/benchmark_runner.cc @@ -126,14 +126,14 @@ BenchmarkReporter::Run CreateRunReport( void RunInThread(const BenchmarkInstance* b, IterationCount iters, int thread_id, ThreadManager* manager, PerfCountersMeasurement* perf_counters_measurement, - ProfilerManager* profiler_manager) { + ProfilerManager* profiler_manager_) { internal::ThreadTimer timer( b->measure_process_cpu_time() ? internal::ThreadTimer::CreateProcessCpuTime() : internal::ThreadTimer::Create()); State st = b->Run(iters, thread_id, &timer, manager, - perf_counters_measurement, profiler_manager); + perf_counters_measurement, profiler_manager_); BM_CHECK(st.skipped() || st.iterations() >= st.max_iterations) << "Benchmark returned before State::KeepRunning() returned false!"; {