// Synthetic benchmark for __tsan_func_entry/exit (spends ~75% there). void foo(bool x); int main() { volatile int kRepeat1 = 1 << 30; const int kRepeat = kRepeat1; for (int i = 0; i < kRepeat; i++) foo(false); } __attribute__((noinline)) void bar(volatile bool x) { if (x) foo(x); } __attribute__((noinline)) void foo(bool x) { if (__builtin_expect(x, false)) bar(x); } |