[OptTable] Fix typo VALUE => VALUES (NFCI) (#121523)
[llvm-project.git] / compiler-rt / test / tsan / Darwin / osatomics-add.mm
blob087958eff0f8bbb19f938e104ed00da6c922bd4d
1 // RUN: %clangxx_tsan %s -o %t -framework Foundation -std=c++11
2 // RUN: %run %t 2>&1 | FileCheck %s
4 #import <Foundation/Foundation.h>
5 #import <libkern/OSAtomic.h>
7 #include <thread>
9 volatile int64_t retainCount = 0;
11 long g = 0;
13 void dealloc() {
14   g = 42;
17 void release() {
18   if (OSAtomicAdd64Barrier(-1, &retainCount) == 0) {
19     dealloc();
20   }
23 void retain() {
24   OSAtomicAdd64Barrier(1, &retainCount);
27 int main(int argc, const char * argv[]) {
28   fprintf(stderr, "start\n");
29   retain();
30   retain();
31   
32   std::thread t([]{
33     release();
34   });
36   g = 47;
38   release();
39   t.join();
41   fprintf(stderr, "end, g = %ld\n", g);
43   return 0;
46 // CHECK: start
47 // CHECK: end, g = 42
48 // CHECK-NOT: WARNING: ThreadSanitizer