|  | // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - -fblocks | FileCheck %s | 
|  | // rdar://8594790 | 
|  |  | 
|  | struct A { | 
|  | int x; | 
|  | A(const A &); | 
|  | A(); | 
|  | ~A(); | 
|  | }; | 
|  |  | 
|  | int main() | 
|  | { | 
|  | __block A BYREF_VAR; | 
|  | ^{ BYREF_VAR.x = 1234; }; | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: define internal void @__Block_byref_object_copy_ | 
|  | // CHECK: call {{.*}} @_ZN1AC1ERKS_ | 
|  | // CHECK-LABEL: define internal void @__Block_byref_object_dispose_ | 
|  | // CHECK: call {{.*}} @_ZN1AD1Ev | 
|  | // CHECK-LABEL: define internal void @__copy_helper_block_ | 
|  | // CHECK: call {{.*}}void @_Block_object_assign | 
|  | // CHECK-LABEL: define internal void @__destroy_helper_block_ | 
|  | // CHECK: call {{.*}}void @_Block_object_dispose | 
|  |  | 
|  | // rdar://problem/11135650 | 
|  | namespace test1 { | 
|  | struct A { int x; A(); ~A(); }; | 
|  |  | 
|  | void test() { | 
|  | return; | 
|  | __block A a; | 
|  | } | 
|  | } |