1// RUN: %clangxx_tsan %s -o %t -framework Foundation 2// RUN: %env_tsan_opts=ignore_interceptors_accesses=1 %run %t 2>&1 | FileCheck %s 3 4#import <Foundation/Foundation.h> 5 6#import <memory> 7 8struct InnerStruct { 9 ~InnerStruct() { 10 fprintf(stderr, "~InnerStruct\n"); 11 } 12}; 13 14struct MyStruct { 15 std::shared_ptr<InnerStruct> inner_object; 16 ~MyStruct() { 17 fprintf(stderr, "~MyStruct\n"); 18 } 19}; 20 21int main(int argc, const char *argv[]) { 22 fprintf(stderr, "Hello world.\n"); 23 24 { 25 std::shared_ptr<MyStruct> shared(new MyStruct()); 26 shared->inner_object = std::shared_ptr<InnerStruct>(new InnerStruct()); 27 } 28 29 fprintf(stderr, "Done.\n"); 30} 31 32// CHECK: Hello world. 33// CHECK: ~MyStruct 34// CHECK: ~InnerStruct 35// CHECK: Done. 36// CHECK-NOT: WARNING: ThreadSanitizer 37