1// Synthetic benchmark for __tsan_func_entry/exit (spends ~75% there).
2
3void foo(bool x);
4
5int main() {
6 volatile int kRepeat1 = 1 << 30;
7 const int kRepeat = kRepeat1;
8 for (int i = 0; i < kRepeat; i++)
9 foo(x: false);
10}
11
12__attribute__((noinline)) void bar(volatile bool x) {
13 if (x)
14 foo(x);
15}
16
17__attribute__((noinline)) void foo(bool x) {
18 if (__builtin_expect(x, false))
19 bar(x);
20}
21

source code of compiler-rt/lib/tsan/benchmarks/func_entry_exit.cpp