| // 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; |
| } |
| } |