// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-apple-darwin -x objective-c++ -fblocks -emit-llvm -o - %s | FileCheck -check-prefix=WITHOUT %s
// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-apple-darwin -x objective-c++ -fblocks -emit-llvm -o - %s -fsanitize=thread | FileCheck -check-prefix=TSAN %s

// WITHOUT-NOT: "sanitize_thread_no_checking_at_run_time"

__attribute__((objc_root_class))
@interface NSObject
- (void)dealloc;
@end

class NeedCleanup {
public:
  ~NeedCleanup() __attribute__((no_sanitize("thread"))) {}
};

@interface MyObject : NSObject {
  NeedCleanup v;
};
+ (void) initialize;
- (void) dealloc;
@end

@implementation MyObject
+ (void)initialize {
}
- (void)dealloc {
  [super dealloc];
}
@end

// TSAN: initialize{{.*}}) [[ATTR:#[0-9]+]]
// TSAN: dealloc{{.*}}) [[ATTR:#[0-9]+]]
// TSAN: cxx_destruct{{.*}}) [[ATTR:#[0-9]+]]

void test2(id x) {
  extern void test2_helper(id (^)(void));
  test2_helper(^{ return x; });
// TSAN: define linkonce_odr hidden void @__destroy_helper_block_8_32o(i8* noundef %0) unnamed_addr [[ATTR:#[0-9]+]]
}

// TSAN: attributes [[ATTR]] = { noinline nounwind {{.*}} "sanitize_thread_no_checking_at_run_time" {{.*}} }
