22
33#include < benchmark/benchmark.h>
44
5+ #include < utility>
6+
57#include < t81/t81lib.hpp>
68
79namespace {
@@ -17,8 +19,10 @@ namespace {
1719 const t81::Float rhs (make_limb (9 ), -2 );
1820 for (auto _ : state) {
1921 auto product = lhs * rhs;
20- benchmark::DoNotOptimize (product.mantissa ());
21- benchmark::DoNotOptimize (product.exponent ());
22+ auto mantissa_value = product.mantissa ();
23+ benchmark::DoNotOptimize (std::move (mantissa_value));
24+ auto exponent_value = product.exponent ();
25+ benchmark::DoNotOptimize (std::move (exponent_value));
2226 }
2327 }
2428 BENCHMARK (BM_FloatMultiply);
@@ -29,8 +33,9 @@ namespace {
2933 for (auto _ : state) {
3034 auto sum = lhs + rhs;
3135 auto ordering = lhs <=> rhs;
32- benchmark::DoNotOptimize (sum.numerator ());
33- benchmark::DoNotOptimize (ordering);
36+ auto numerator_value = sum.numerator ();
37+ benchmark::DoNotOptimize (std::move (numerator_value));
38+ benchmark::DoNotOptimize (std::move (ordering));
3439 }
3540 }
3641 BENCHMARK (BM_RatioArithmetic);
@@ -42,7 +47,8 @@ namespace {
4247 for (auto _ : state) {
4348 auto result = left;
4449 result += right;
45- benchmark::DoNotOptimize (result.to_limb ());
50+ auto limb_value = result.to_limb ();
51+ benchmark::DoNotOptimize (std::move (limb_value));
4652 }
4753 }
4854 BENCHMARK (BM_MontgomeryIntAdd);
@@ -54,7 +60,8 @@ namespace {
5460 for (auto _ : state) {
5561 auto result = left;
5662 result *= right;
57- benchmark::DoNotOptimize (result.to_limb ());
63+ auto limb_value = result.to_limb ();
64+ benchmark::DoNotOptimize (std::move (limb_value));
5865 }
5966 }
6067 BENCHMARK (BM_MontgomeryIntMultiply);
0 commit comments