1 | // RUN: %clang_cc1 %s -emit-llvm -o - -fobjc-gc -fblocks -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s --check-prefix=CHECK --check-prefix=OBJC |
2 | // RUN: %clang_cc1 -x objective-c++ %s -emit-llvm -o - -fobjc-gc -fblocks -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s --check-prefix=CHECK --check-prefix=OBJCXX |
3 | |
4 | // OBJC-LABEL: define void @test1( |
5 | // OBJCXX-LABEL: define void @_Z5test1P12NSDictionary( |
6 | |
7 | // CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_ |
8 | // CHECK: call void @_Block_object_assign( |
9 | |
10 | // CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block_ |
11 | // CHECK: call void @_Block_object_dispose( |
12 | |
13 | // OBJC-LABEL: define void @foo( |
14 | // OBJCXX-LABEL: define void @_Z3foov( |
15 | // CHECK: call i8* @objc_read_weak( |
16 | // CHECK: call i8* @objc_assign_weak( |
17 | // CHECK: call void @_Block_object_dispose( |
18 | |
19 | // OBJC-LABEL: define void @test2( |
20 | // OBJCXX-LABEL: define void @_Z5test2v( |
21 | // CHECK: call i8* @objc_assign_weak( |
22 | // CHECK: call void @_Block_object_dispose( |
23 | |
24 | // CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_ |
25 | // CHECK: call void @_Block_object_assign( |
26 | |
27 | // CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block_ |
28 | // CHECK: call void @_Block_object_dispose( |
29 | |
30 | @interface NSDictionary @end |
31 | |
32 | void test1(NSDictionary * dict) { |
33 | ^{ (void)dict; }(); |
34 | } |
35 | |
36 | @interface D |
37 | @end |
38 | |
39 | void foo() { |
40 | __block __weak D *weakSelf; |
41 | ^{ (void)weakSelf; }; |
42 | D *l; |
43 | l = weakSelf; |
44 | weakSelf = l; |
45 | } |
46 | |
47 | void (^__weak b)(void); |
48 | |
49 | void test2() { |
50 | __block int i = 0; |
51 | b = ^ { ++i; }; |
52 | } |
53 | |