Index: third_party/google_benchmark/test/donotoptimize_test.cc |
diff --git a/third_party/google_benchmark/test/donotoptimize_test.cc b/third_party/google_benchmark/test/donotoptimize_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b21187aadc2175c1561fc2e431126be029b403ca |
--- /dev/null |
+++ b/third_party/google_benchmark/test/donotoptimize_test.cc |
@@ -0,0 +1,33 @@ |
+#include "benchmark/benchmark.h" |
+ |
+#include <cstdint> |
+ |
+namespace { |
+#if defined(__GNUC__) |
+std::uint64_t double_up(const std::uint64_t x) __attribute__((const)); |
+#endif |
+std::uint64_t double_up(const std::uint64_t x) { return x * 2; } |
+} |
+ |
+int main(int, char*[]) { |
+ // this test verifies compilation of DoNotOptimize() for some types |
+ |
+ char buffer8[8]; |
+ benchmark::DoNotOptimize(buffer8); |
+ |
+ char buffer20[20]; |
+ benchmark::DoNotOptimize(buffer20); |
+ |
+ char buffer1024[1024]; |
+ benchmark::DoNotOptimize(buffer1024); |
+ benchmark::DoNotOptimize(&buffer1024[0]); |
+ |
+ int x = 123; |
+ benchmark::DoNotOptimize(x); |
+ benchmark::DoNotOptimize(&x); |
+ benchmark::DoNotOptimize(x += 42); |
+ |
+ benchmark::DoNotOptimize(double_up(x)); |
+ |
+ return 0; |
+} |