summaryrefslogtreecommitdiff
path: root/test/tsan/libcxx/std_shared_ptr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/tsan/libcxx/std_shared_ptr.cc')
-rw-r--r--test/tsan/libcxx/std_shared_ptr.cc24
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 0000000000000..191a17cc798dd
--- /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;
+}