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 32void test1(NSDictionary * dict) { 33 ^{ (void)dict; }(); 34} 35 36@interface D 37@end 38 39void foo() { 40 __block __weak D *weakSelf; 41 ^{ (void)weakSelf; }; 42 D *l; 43 l = weakSelf; 44 weakSelf = l; 45} 46 47void (^__weak b)(void); 48 49void test2() { 50 __block int i = 0; 51 b = ^ { ++i; }; 52} 53