1*bcaeed49SFangrui Song // RUN: %clang_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s 2*bcaeed49SFangrui Song 3*bcaeed49SFangrui Song #include <stdio.h> 4*bcaeed49SFangrui Song #include <stdlib.h> 5*bcaeed49SFangrui Song atexit5()6*bcaeed49SFangrui Songstatic void atexit5() { 7*bcaeed49SFangrui Song fprintf(stderr, "5"); 8*bcaeed49SFangrui Song } 9*bcaeed49SFangrui Song atexit4()10*bcaeed49SFangrui Songstatic void atexit4() { 11*bcaeed49SFangrui Song fprintf(stderr, "4"); 12*bcaeed49SFangrui Song } 13*bcaeed49SFangrui Song atexit3()14*bcaeed49SFangrui Songstatic void atexit3() { 15*bcaeed49SFangrui Song fprintf(stderr, "3"); 16*bcaeed49SFangrui Song } 17*bcaeed49SFangrui Song atexit2()18*bcaeed49SFangrui Songstatic void atexit2() { 19*bcaeed49SFangrui Song fprintf(stderr, "2"); 20*bcaeed49SFangrui Song } 21*bcaeed49SFangrui Song atexit1()22*bcaeed49SFangrui Songstatic void atexit1() { 23*bcaeed49SFangrui Song fprintf(stderr, "1"); 24*bcaeed49SFangrui Song } 25*bcaeed49SFangrui Song atexit0()26*bcaeed49SFangrui Songstatic void atexit0() { 27*bcaeed49SFangrui Song fprintf(stderr, "\n"); 28*bcaeed49SFangrui Song } 29*bcaeed49SFangrui Song main()30*bcaeed49SFangrui Songint main() { 31*bcaeed49SFangrui Song atexit(atexit0); 32*bcaeed49SFangrui Song atexit(atexit1); 33*bcaeed49SFangrui Song atexit(atexit2); 34*bcaeed49SFangrui Song atexit(atexit3); 35*bcaeed49SFangrui Song atexit(atexit4); 36*bcaeed49SFangrui Song atexit(atexit5); 37*bcaeed49SFangrui Song } 38*bcaeed49SFangrui Song 39*bcaeed49SFangrui Song // CHECK-NOT: FATAL: ThreadSanitizer 40*bcaeed49SFangrui Song // CHECK-NOT: WARNING: ThreadSanitizer 41*bcaeed49SFangrui Song // CHECK: 54321 42