// REQUIRES: continuous-mode // RUN: rm -rf %t.dir // RUN: %clangxx_pgogen=%t.dir -fprofile-continuous -lpthread %s -o %t.exe -mllvm -disable-vp -fprofile-update=atomic // RUN: %run %t.exe // RUN: llvm-profdata show --counts --function=accum %t.dir/default_*.profraw | FileCheck %s // CHECK: Block counts: [100000, 4] #include int x = 0; void accum(int n) { for (int i = 0; i < n; i++) x += i; // don't care about accuracy, no need for atomic. } int main() { int init_value = 10000; auto t1 = std::thread(accum, 1*init_value); auto t2 = std::thread(accum, 2*init_value); auto t3 = std::thread(accum, 3*init_value); auto t4 = std::thread(accum, 4*init_value); t1.join(); t2.join(); t3.join(); t4.join(); return !x; }