1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -o - %s | FileCheck %s 2 3 // CHECK-LABEL: define %struct.S1* @_Z4foo1i( 4 // CHECK: %[[CALL:[a-z0-9]+]] = call %struct.S1* @_Z4foo0i 5 // CHECK: ret %struct.S1* %[[CALL]] 6 7 // CHECK-LABEL: define %struct.S1* @_ZN2S22m1Ev( 8 // CHECK: %[[CALL:[a-z0-9]+]] = call %struct.S1* @_Z4foo0i 9 // CHECK: ret %struct.S1* %[[CALL]] 10 11 // CHECK-LABEL: define internal %struct.S1* @Block1_block_invoke( 12 // CHECK: %[[CALL:[a-z0-9]+]] = call %struct.S1* @_Z4foo0i 13 // CHECK: ret %struct.S1* %[[CALL]] 14 15 struct S1; 16 17 typedef __attribute__((NSObject)) struct __attribute__((objc_bridge(id))) S1 * S1Ref; 18 19 S1Ref foo0(int); 20 21 struct S2 { 22 S1Ref m1(); 23 }; 24 25 S1Ref foo1(int a) { 26 return foo0(a); 27 } 28 29 S1Ref S2::m1() { 30 return foo0(0); 31 } 32 33 S1Ref (^Block1)(void) = ^{ 34 return foo0(0); 35 }; 36