1c77bf89dSJulian Lettner // RUN: %clang_tsan %s -o %t 2*a59dad92SJulian Lettner // RUN: %run %t 2>&1 | FileCheck %s --implicit-check-not='ThreadSanitizer' 3c77bf89dSJulian Lettner 4c77bf89dSJulian Lettner #include "dispatch/dispatch.h" 5c77bf89dSJulian Lettner 6c77bf89dSJulian Lettner #include <stdio.h> 7c77bf89dSJulian Lettner 8c77bf89dSJulian Lettner long global; 9c77bf89dSJulian Lettner main()10c77bf89dSJulian Lettnerint main() { 11c77bf89dSJulian Lettner fprintf(stderr, "Hello world.\n"); 12c77bf89dSJulian Lettner dispatch_semaphore_t done = dispatch_semaphore_create(0); 13c77bf89dSJulian Lettner 14c77bf89dSJulian Lettner global = 42; 15c77bf89dSJulian Lettner dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 16c77bf89dSJulian Lettner global = 43; 17c77bf89dSJulian Lettner 18c77bf89dSJulian Lettner dispatch_semaphore_signal(done); 19c77bf89dSJulian Lettner }); 20c77bf89dSJulian Lettner 21c77bf89dSJulian Lettner dispatch_semaphore_wait(done, DISPATCH_TIME_FOREVER); 22c77bf89dSJulian Lettner fprintf(stderr, "Done.\n"); 23c77bf89dSJulian Lettner } 24c77bf89dSJulian Lettner 25c77bf89dSJulian Lettner // CHECK: Hello world. 26c77bf89dSJulian Lettner // CHECK: Done. 27