xref: /llvm-project/compiler-rt/test/tsan/bench_malloc.cpp (revision 6d1f86095de94739d3ed74ca314541a1794db47f)
1*6d1f8609SDmitry Vyukov // RUN: %clangxx_tsan %s -o %t
2*6d1f8609SDmitry Vyukov // RUN: %run %t 2>&1 | FileCheck %s
3*6d1f8609SDmitry Vyukov 
4*6d1f8609SDmitry Vyukov // bench.h needs pthread barriers which are not available on OS X
5*6d1f8609SDmitry Vyukov // UNSUPPORTED: darwin
6*6d1f8609SDmitry Vyukov 
7*6d1f8609SDmitry Vyukov #include "bench.h"
8*6d1f8609SDmitry Vyukov 
thread(int tid)9*6d1f8609SDmitry Vyukov void thread(int tid) {
10*6d1f8609SDmitry Vyukov   void **blocks = new void *[bench_mode];
11*6d1f8609SDmitry Vyukov   for (int i = 0; i < bench_niter; i++) {
12*6d1f8609SDmitry Vyukov     for (int j = 0; j < bench_mode; j++)
13*6d1f8609SDmitry Vyukov       blocks[j] = malloc(8);
14*6d1f8609SDmitry Vyukov     for (int j = 0; j < bench_mode; j++)
15*6d1f8609SDmitry Vyukov       free(blocks[j]);
16*6d1f8609SDmitry Vyukov   }
17*6d1f8609SDmitry Vyukov   delete[] blocks;
18*6d1f8609SDmitry Vyukov }
19*6d1f8609SDmitry Vyukov 
bench()20*6d1f8609SDmitry Vyukov void bench() { start_thread_group(bench_nthread, thread); }
21*6d1f8609SDmitry Vyukov 
22*6d1f8609SDmitry Vyukov // CHECK: DONE
23