diff options
Diffstat (limited to 'test/tsan/libcxx/std_shared_ptr.cc')
| -rw-r--r-- | test/tsan/libcxx/std_shared_ptr.cc | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/test/tsan/libcxx/std_shared_ptr.cc b/test/tsan/libcxx/std_shared_ptr.cc new file mode 100644 index 000000000000..191a17cc798d --- /dev/null +++ b/test/tsan/libcxx/std_shared_ptr.cc @@ -0,0 +1,24 @@ +// RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s +#include <stdio.h> +#include <memory> +#include <thread> + +int main() { +  int v1 = 0; +  int v2 = 0; +  std::thread t1; +  std::thread t2; + +  { +     auto thingy = std::make_shared<int>(42); +     t1 = std::thread([thingy, &v1] { v1 = *thingy; }); +     t2 = std::thread([thingy, &v2] { v2 = *thingy; }); +  } + +  t1.join(); +  t2.join(); +  printf("%d %d\n", v1, v2); +  // CHECK-NOT: ThreadSanitizer: data race +  // CHECK: 42 42 +  return 0; +} | 
