1*7c3d14c8STreehugger Robot // RUN: %clang_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s 2*7c3d14c8STreehugger Robot 3*7c3d14c8STreehugger Robot #include <stdio.h> 4*7c3d14c8STreehugger Robot #include <stdlib.h> 5*7c3d14c8STreehugger Robot 6*7c3d14c8STreehugger Robot class Logger { 7*7c3d14c8STreehugger Robot public: Logger()8*7c3d14c8STreehugger Robot Logger() { 9*7c3d14c8STreehugger Robot fprintf(stderr, "Logger ctor\n"); 10*7c3d14c8STreehugger Robot } 11*7c3d14c8STreehugger Robot ~Logger()12*7c3d14c8STreehugger Robot ~Logger() { 13*7c3d14c8STreehugger Robot fprintf(stderr, "Logger dtor\n"); 14*7c3d14c8STreehugger Robot } 15*7c3d14c8STreehugger Robot }; 16*7c3d14c8STreehugger Robot 17*7c3d14c8STreehugger Robot Logger logger; 18*7c3d14c8STreehugger Robot log_from_atexit()19*7c3d14c8STreehugger Robotvoid log_from_atexit() { 20*7c3d14c8STreehugger Robot fprintf(stderr, "In log_from_atexit\n"); 21*7c3d14c8STreehugger Robot } 22*7c3d14c8STreehugger Robot main()23*7c3d14c8STreehugger Robotint main() { 24*7c3d14c8STreehugger Robot atexit(log_from_atexit); 25*7c3d14c8STreehugger Robot } 26*7c3d14c8STreehugger Robot 27*7c3d14c8STreehugger Robot // CHECK: Logger ctor 28*7c3d14c8STreehugger Robot // CHECK: In log_from_atexit 29*7c3d14c8STreehugger Robot // CHECK: Logger dtor 30