Skip to content

[libc] Fix Cppcheck Issues #96999

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 6, 2024
Merged

Conversation

jameshu15869
Copy link
Contributor

This PR fixes linting issues discovered by cppcheck.

Fixes: #96863

@llvmbot llvmbot added the libc label Jun 28, 2024
@llvmbot
Copy link
Member

llvmbot commented Jun 28, 2024

@llvm/pr-subscribers-libc

Author: None (jameshu15869)

Changes

This PR fixes linting issues discovered by cppcheck.

Fixes: #96863


Full diff: https://github.com/llvm/llvm-project/pull/96999.diff

1 Files Affected:

  • (modified) libc/benchmarks/gpu/LibcGpuBenchmark.cpp (+12-13)
diff --git a/libc/benchmarks/gpu/LibcGpuBenchmark.cpp b/libc/benchmarks/gpu/LibcGpuBenchmark.cpp
index 69adb0c95ba76..3f8899eda0f63 100644
--- a/libc/benchmarks/gpu/LibcGpuBenchmark.cpp
+++ b/libc/benchmarks/gpu/LibcGpuBenchmark.cpp
@@ -17,7 +17,8 @@ void Benchmark::add_benchmark(Benchmark *benchmark) {
   benchmarks.push_back(benchmark);
 }
 
-BenchmarkResult reduce_results(cpp::array<BenchmarkResult, 1024> &results) {
+BenchmarkResult
+reduce_results(const cpp::array<BenchmarkResult, 1024> &results) {
   BenchmarkResult result;
   uint64_t cycles_sum = 0;
   double standard_deviation_sum = 0;
@@ -51,16 +52,16 @@ void Benchmark::run_benchmarks() {
   uint64_t id = gpu::get_thread_id();
   gpu::sync_threads();
 
-  for (Benchmark *benchmark : benchmarks)
-    results[id] = benchmark->run();
+  for (Benchmark *b : benchmarks)
+    results[id] = b->run();
   gpu::sync_threads();
   if (id == 0) {
-    for (Benchmark *benchmark : benchmarks) {
+    for (Benchmark const *b : benchmarks) {
       BenchmarkResult all_results = reduce_results(results);
       constexpr auto GREEN = "\033[32m";
       constexpr auto RESET = "\033[0m";
-      log << GREEN << "[ RUN      ] " << RESET << benchmark->get_name() << '\n';
-      log << GREEN << "[       OK ] " << RESET << benchmark->get_name() << ": "
+      log << GREEN << "[ RUN      ] " << RESET << b->get_name() << '\n';
+      log << GREEN << "[       OK ] " << RESET << b->get_name() << ": "
           << all_results.cycles << " cycles, " << all_results.min << " min, "
           << all_results.max << " max, " << all_results.total_iterations
           << " iterations, " << all_results.total_time << " ns, "
@@ -82,7 +83,6 @@ BenchmarkResult benchmark(const BenchmarkOptions &options,
   uint32_t samples = 0;
   uint64_t total_time = 0;
   uint64_t best_guess = 0;
-  uint64_t total_cycles = 0;
   uint64_t cycles_squared = 0;
   uint64_t min = UINT64_MAX;
   uint64_t max = 0;
@@ -92,15 +92,15 @@ BenchmarkResult benchmark(const BenchmarkOptions &options,
   for (int i = 0; i < overhead_iterations; i++)
     overhead = cpp::min(overhead, LIBC_NAMESPACE::overhead());
 
-  for (uint64_t time_budget = options.max_duration; time_budget >= 0;) {
+  for (uint64_t time_budget = options.max_duration; time_budget != 0;) {
     uint64_t sample_cycles = 0;
     const clock_t start = static_cast<double>(clock());
     for (uint32_t i = 0; i < iterations; i++) {
       auto wrapper_intermediate = wrapper_func();
-      uint64_t result = wrapper_intermediate - overhead;
-      max = cpp::max(max, result);
-      min = cpp::min(min, result);
-      sample_cycles += result;
+      uint64_t current_result = wrapper_intermediate - overhead;
+      max = cpp::max(max, current_result);
+      min = cpp::min(min, current_result);
+      sample_cycles += current_result;
     }
     const clock_t end = clock();
     const clock_t duration_ns =
@@ -108,7 +108,6 @@ BenchmarkResult benchmark(const BenchmarkOptions &options,
     total_time += duration_ns;
     time_budget -= duration_ns;
     samples++;
-    total_cycles += sample_cycles;
     cycles_squared += sample_cycles * sample_cycles;
 
     total_iterations += iterations;

@lntue
Copy link
Contributor

lntue commented Jun 28, 2024

@jameshu15869 Do you think we can turn on most of the warning flags together with Werror for benchmark folder similar to our src folder?
https://github.com/llvm/llvm-project/blob/main/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake#L73-L78

@jameshu15869
Copy link
Contributor Author

jameshu15869 commented Jun 28, 2024

@jameshu15869 Do you think we can turn on most of the warning flags together with Werror for benchmark folder similar to our src folder?
https://github.com/llvm/llvm-project/blob/main/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake#L73-L78

I don't think I built LLVM using the LIBC_WNO_ERROR option, so I don't think I am compiling with -Werror right now.

@jhuber6 do you think -Werror should show up in my compile flags?

@jhuber6
Copy link
Contributor

jhuber6 commented Jun 28, 2024

@jameshu15869 Do you think we can turn on most of the warning flags together with Werror for benchmark folder similar to our src folder?
https://github.com/llvm/llvm-project/blob/main/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake#L73-L78

I don't think I built LLVM using the LIBC_WNO_ERROR option, so I don't think I am compiling with -Werror right now.

@jhuber6 do you think -Werror should show up in my compile flags?

We currently don't build with -Werror for the tests, that being said there probably shouldn't be any warnings.

@jhuber6 jhuber6 merged commit f4e6ddb into llvm:main Jul 6, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

libc/benchmarks/gpu/LibcGpuBenchmark.cpp:95: Broken comparison ?
4 participants