53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
// 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
 | 
						|
// 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
 | 
						|
 | 
						|
// OBJC-LABEL: define void @test1(
 | 
						|
// OBJCXX-LABEL: define void @_Z5test1P12NSDictionary(
 | 
						|
 | 
						|
// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_
 | 
						|
// CHECK: call void @_Block_object_assign(
 | 
						|
 | 
						|
// CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block_
 | 
						|
// CHECK: call void @_Block_object_dispose(
 | 
						|
 | 
						|
// OBJC-LABEL: define void @foo(
 | 
						|
// OBJCXX-LABEL: define void @_Z3foov(
 | 
						|
// CHECK: call i8* @objc_read_weak(
 | 
						|
// CHECK: call i8* @objc_assign_weak(
 | 
						|
// CHECK: call void @_Block_object_dispose(
 | 
						|
 | 
						|
// OBJC-LABEL: define void @test2(
 | 
						|
// OBJCXX-LABEL: define void @_Z5test2v(
 | 
						|
// CHECK: call i8* @objc_assign_weak(
 | 
						|
// CHECK: call void @_Block_object_dispose(
 | 
						|
 | 
						|
// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_
 | 
						|
// CHECK: call void @_Block_object_assign(
 | 
						|
 | 
						|
// CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block_
 | 
						|
// CHECK: call void @_Block_object_dispose(
 | 
						|
 | 
						|
@interface NSDictionary @end
 | 
						|
 | 
						|
void test1(NSDictionary * dict) {
 | 
						|
  ^{ (void)dict; }();
 | 
						|
}
 | 
						|
 | 
						|
@interface D
 | 
						|
@end
 | 
						|
 | 
						|
void foo() {
 | 
						|
  __block __weak D *weakSelf;
 | 
						|
  ^{ (void)weakSelf; };
 | 
						|
  D *l;
 | 
						|
  l = weakSelf;
 | 
						|
  weakSelf = l;
 | 
						|
}
 | 
						|
 | 
						|
void (^__weak b)(void);
 | 
						|
 | 
						|
void test2() {
 | 
						|
  __block int i = 0;
 | 
						|
  b = ^ {  ++i; };
 | 
						|
}
 |