2016-05-25 06:31:20 +00:00
|
|
|
#include "benchmark/benchmark.h"
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
#if defined(__GNUC__)
|
2016-10-07 18:04:50 +00:00
|
|
|
std::uint64_t double_up(const std::uint64_t x) __attribute__((const));
|
2016-05-25 06:31:20 +00:00
|
|
|
#endif
|
2016-10-07 18:04:50 +00:00
|
|
|
std::uint64_t double_up(const std::uint64_t x) { return x * 2; }
|
2016-05-25 06:31:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|