diff --git a/src/tests/profiler_unittest.cc b/src/tests/profiler_unittest.cc index 4c814c0..d634901 100644 --- a/src/tests/profiler_unittest.cc +++ b/src/tests/profiler_unittest.cc @@ -42,12 +42,15 @@ #include // for fork() #endif #include // for wait() + +#include + #include "gperftools/profiler.h" #include "base/simple_mutex.h" #include "tests/testutil.h" -static volatile int result = 0; -static int g_iters = 0; // argv[1] +static std::atomic result; +static int g_iters; // argv[1] Mutex mutex(Mutex::LINKER_INITIALIZED); @@ -62,7 +65,9 @@ static void test_other_thread() { for (i = 0; i < g_iters; ++i ) { result ^= i; } - snprintf(b, sizeof(b), "other: %d", result); // get some libc action + snprintf(b, sizeof(b), "other: %d", result.load()); // get some libc action + (void)noopt(b); // 'consume' b. Ensure that smart compiler doesn't + // remove snprintf call } #endif } @@ -75,7 +80,8 @@ static void test_main_thread() { for (i = 0; i < g_iters; ++i ) { result ^= i; } - snprintf(b, sizeof(b), "same: %d", result); // get some libc action + snprintf(b, sizeof(b), "same: %d", result.load()); // get some libc action + (void)noopt(b); // 'consume' b } }