summaryrefslogtreecommitdiff
path: root/test/tsan/Darwin/gcd-sync-block-copy.mm
diff options
context:
space:
mode:
Diffstat (limited to 'test/tsan/Darwin/gcd-sync-block-copy.mm')
-rw-r--r--test/tsan/Darwin/gcd-sync-block-copy.mm10
1 files changed, 7 insertions, 3 deletions
diff --git a/test/tsan/Darwin/gcd-sync-block-copy.mm b/test/tsan/Darwin/gcd-sync-block-copy.mm
index 87658d7f3..a5bdc72fb 100644
--- a/test/tsan/Darwin/gcd-sync-block-copy.mm
+++ b/test/tsan/Darwin/gcd-sync-block-copy.mm
@@ -1,9 +1,9 @@
// This test verifies that dispatch_sync() doesn't actually copy the block under TSan (without TSan, it doesn't).
-// RUN: %clang_tsan -fno-sanitize=thread %s -o %t_no_tsan -framework Foundation
-// RUN: %run %t_no_tsan 2>&1 | FileCheck %s
-
+// RUN: %clang_tsan %s -o %t_no_tsan -framework Foundation -fno-sanitize=thread
// RUN: %clang_tsan %s -o %t_with_tsan -framework Foundation
+
+// RUN: %run %t_no_tsan 2>&1 | FileCheck %s
// RUN: %run %t_with_tsan 2>&1 | FileCheck %s
#import <Foundation/Foundation.h>
@@ -22,9 +22,13 @@
int main(int argc, const char* argv[]) {
dispatch_queue_t q = dispatch_queue_create("my.queue", NULL);
id object = [[MyClass alloc] init];
+ void (^block)(void) = ^ {
+ NSLog(@"%@", object);
+ };
dispatch_sync(q, ^{
NSLog(@"%@", object);
});
+ dispatch_sync(q, block);
[object release];
NSLog(@"Done.");
return 0;