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 Song static void atexit5() {
7*bcaeed49SFangrui Song   fprintf(stderr, "5");
8*bcaeed49SFangrui Song }
9*bcaeed49SFangrui Song 
atexit4()10*bcaeed49SFangrui Song static void atexit4() {
11*bcaeed49SFangrui Song   fprintf(stderr, "4");
12*bcaeed49SFangrui Song }
13*bcaeed49SFangrui Song 
atexit3()14*bcaeed49SFangrui Song static void atexit3() {
15*bcaeed49SFangrui Song   fprintf(stderr, "3");
16*bcaeed49SFangrui Song }
17*bcaeed49SFangrui Song 
atexit2()18*bcaeed49SFangrui Song static void atexit2() {
19*bcaeed49SFangrui Song   fprintf(stderr, "2");
20*bcaeed49SFangrui Song }
21*bcaeed49SFangrui Song 
atexit1()22*bcaeed49SFangrui Song static void atexit1() {
23*bcaeed49SFangrui Song   fprintf(stderr, "1");
24*bcaeed49SFangrui Song }
25*bcaeed49SFangrui Song 
atexit0()26*bcaeed49SFangrui Song static void atexit0() {
27*bcaeed49SFangrui Song   fprintf(stderr, "\n");
28*bcaeed49SFangrui Song }
29*bcaeed49SFangrui Song 
main()30*bcaeed49SFangrui Song int 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