21 lines
		
	
	
		
			397 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			397 B
		
	
	
	
		
			C++
		
	
	
	
| // 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);
 | |
| }
 |