blob: 1ac9c30c8a00e171ee3d3a54cb0c0e2b40e87076 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 %s -emit-llvm -o %t -fobjc-gc -fblocks -triple i386-apple-darwin10
Daniel Dunbar4fcfde42009-11-08 01:45:36 +00002// RUN: grep "_Block_object_dispose" %t | count 6
3// RUN: grep "__copy_helper_block_" %t | count 4
4// RUN: grep "__destroy_helper_block_" %t | count 4
5// RUN: grep "__Block_byref_id_object_copy_" %t | count 2
6// RUN: grep "__Block_byref_id_object_dispose_" %t | count 2
7// RUN: grep "i32 135)" %t | count 0
8// RUN: grep "_Block_object_assign" %t | count 4
9// RUN: grep "objc_read_weak" %t | count 2
Mike Stump75b163f2009-04-21 00:51:43 +000010// RUN: grep "objc_assign_weak" %t | count 3
Fariborz Jahaniana5da9022010-05-19 23:07:54 +000011// RUN: %clang_cc1 -x objective-c++ %s -emit-llvm -o %t -fobjc-gc -fblocks -triple i386-apple-darwin10
12// RUN: grep "_Block_object_dispose" %t | count 6
13// RUN: grep "__copy_helper_block_" %t | count 4
14// RUN: grep "__destroy_helper_block_" %t | count 4
15// RUN: grep "__Block_byref_id_object_copy_" %t | count 2
16// RUN: grep "__Block_byref_id_object_dispose_" %t | count 2
17// RUN: grep "i32 135)" %t | count 0
18// RUN: grep "_Block_object_assign" %t | count 4
19// RUN: grep "objc_read_weak" %t | count 2
20// RUN: grep "objc_assign_weak" %t | count 3
Mike Stumpc0c0ef02009-04-10 23:09:55 +000021
22@interface NSDictionary @end
23
24void test1(NSDictionary * dict) {
25 ^{ (void)dict; }();
26}
Mike Stumpf33651c2009-04-14 00:57:29 +000027
28@interface D
29@end
30
31void foo() {
32 __block __weak D *weakSelf;
33 D *l;
34 l = weakSelf;
35 weakSelf = l;
36}
Mike Stump75b163f2009-04-21 00:51:43 +000037
38void (^__weak b)(void);
39
40void test2() {
41 __block int i = 0;
42 b = ^ { ++i; };
43}