summaryrefslogtreecommitdiffstats
path: root/lib/libcxx/utils/google-benchmark/test/donotoptimize_assembly_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libcxx/utils/google-benchmark/test/donotoptimize_assembly_test.cc')
-rw-r--r--lib/libcxx/utils/google-benchmark/test/donotoptimize_assembly_test.cc163
1 files changed, 0 insertions, 163 deletions
diff --git a/lib/libcxx/utils/google-benchmark/test/donotoptimize_assembly_test.cc b/lib/libcxx/utils/google-benchmark/test/donotoptimize_assembly_test.cc
deleted file mode 100644
index d4b0bab70e7..00000000000
--- a/lib/libcxx/utils/google-benchmark/test/donotoptimize_assembly_test.cc
+++ /dev/null
@@ -1,163 +0,0 @@
-#include <benchmark/benchmark.h>
-
-#ifdef __clang__
-#pragma clang diagnostic ignored "-Wreturn-type"
-#endif
-
-extern "C" {
-
-extern int ExternInt;
-extern int ExternInt2;
-extern int ExternInt3;
-
-inline int Add42(int x) { return x + 42; }
-
-struct NotTriviallyCopyable {
- NotTriviallyCopyable();
- explicit NotTriviallyCopyable(int x) : value(x) {}
- NotTriviallyCopyable(NotTriviallyCopyable const&);
- int value;
-};
-
-struct Large {
- int value;
- int data[2];
-};
-
-}
-// CHECK-LABEL: test_with_rvalue:
-extern "C" void test_with_rvalue() {
- benchmark::DoNotOptimize(Add42(0));
- // CHECK: movl $42, %eax
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_large_rvalue:
-extern "C" void test_with_large_rvalue() {
- benchmark::DoNotOptimize(Large{ExternInt, {ExternInt, ExternInt}});
- // CHECK: ExternInt(%rip)
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG:[a-z]+]]
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG]])
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG]])
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_non_trivial_rvalue:
-extern "C" void test_with_non_trivial_rvalue() {
- benchmark::DoNotOptimize(NotTriviallyCopyable(ExternInt));
- // CHECK: mov{{l|q}} ExternInt(%rip)
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_lvalue:
-extern "C" void test_with_lvalue() {
- int x = 101;
- benchmark::DoNotOptimize(x);
- // CHECK-GNU: movl $101, %eax
- // CHECK-CLANG: movl $101, -{{[0-9]+}}(%[[REG:[a-z]+]])
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_large_lvalue:
-extern "C" void test_with_large_lvalue() {
- Large L{ExternInt, {ExternInt, ExternInt}};
- benchmark::DoNotOptimize(L);
- // CHECK: ExternInt(%rip)
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG:[a-z]+]])
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG]])
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG]])
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_non_trivial_lvalue:
-extern "C" void test_with_non_trivial_lvalue() {
- NotTriviallyCopyable NTC(ExternInt);
- benchmark::DoNotOptimize(NTC);
- // CHECK: ExternInt(%rip)
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG:[a-z]+]])
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_const_lvalue:
-extern "C" void test_with_const_lvalue() {
- const int x = 123;
- benchmark::DoNotOptimize(x);
- // CHECK: movl $123, %eax
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_large_const_lvalue:
-extern "C" void test_with_large_const_lvalue() {
- const Large L{ExternInt, {ExternInt, ExternInt}};
- benchmark::DoNotOptimize(L);
- // CHECK: ExternInt(%rip)
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG:[a-z]+]])
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG]])
- // CHECK: movl %eax, -{{[0-9]+}}(%[[REG]])
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_with_non_trivial_const_lvalue:
-extern "C" void test_with_non_trivial_const_lvalue() {
- const NotTriviallyCopyable Obj(ExternInt);
- benchmark::DoNotOptimize(Obj);
- // CHECK: mov{{q|l}} ExternInt(%rip)
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_div_by_two:
-extern "C" int test_div_by_two(int input) {
- int divisor = 2;
- benchmark::DoNotOptimize(divisor);
- return input / divisor;
- // CHECK: movl $2, [[DEST:.*]]
- // CHECK: idivl [[DEST]]
- // CHECK: ret
-}
-
-// CHECK-LABEL: test_inc_integer:
-extern "C" int test_inc_integer() {
- int x = 0;
- for (int i=0; i < 5; ++i)
- benchmark::DoNotOptimize(++x);
- // CHECK: movl $1, [[DEST:.*]]
- // CHECK: {{(addl \$1,|incl)}} [[DEST]]
- // CHECK: {{(addl \$1,|incl)}} [[DEST]]
- // CHECK: {{(addl \$1,|incl)}} [[DEST]]
- // CHECK: {{(addl \$1,|incl)}} [[DEST]]
- // CHECK-CLANG: movl [[DEST]], %eax
- // CHECK: ret
- return x;
-}
-
-// CHECK-LABEL: test_pointer_rvalue
-extern "C" void test_pointer_rvalue() {
- // CHECK: movl $42, [[DEST:.*]]
- // CHECK: leaq [[DEST]], %rax
- // CHECK-CLANG: movq %rax, -{{[0-9]+}}(%[[REG:[a-z]+]])
- // CHECK: ret
- int x = 42;
- benchmark::DoNotOptimize(&x);
-}
-
-// CHECK-LABEL: test_pointer_const_lvalue:
-extern "C" void test_pointer_const_lvalue() {
- // CHECK: movl $42, [[DEST:.*]]
- // CHECK: leaq [[DEST]], %rax
- // CHECK-CLANG: movq %rax, -{{[0-9]+}}(%[[REG:[a-z]+]])
- // CHECK: ret
- int x = 42;
- int * const xp = &x;
- benchmark::DoNotOptimize(xp);
-}
-
-// CHECK-LABEL: test_pointer_lvalue:
-extern "C" void test_pointer_lvalue() {
- // CHECK: movl $42, [[DEST:.*]]
- // CHECK: leaq [[DEST]], %rax
- // CHECK-CLANG: movq %rax, -{{[0-9]+}}(%[[REG:[a-z+]+]])
- // CHECK: ret
- int x = 42;
- int *xp = &x;
- benchmark::DoNotOptimize(xp);
-}