1 // RUN: %clangxx_tsan -O1 %s -o %t && %run %t | FileCheck %s 2 // Regtest for https://code.google.com/p/thread-sanitizer/issues/detail?id=40 3 // This is a correct program and tsan should not report a race. 4 #include <pthread.h> 5 #include <unistd.h> 6 #include <stdio.h> 7 int g; 8 __attribute__((noinline)) 9 int foo(int cond) { 10 if (cond) 11 return g; 12 return 0; 13 } 14 void *Thread1(void *p) { 15 long res = foo((long)p); 16 sleep(1); 17 return (void*) res; 18 } 19 20 int main() { 21 pthread_t t; 22 pthread_create(&t, 0, Thread1, 0); 23 g = 1; 24 pthread_join(t, 0); 25 printf("PASS\n"); 26 // CHECK: PASS 27 } 28