1 | // RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s |
2 | // rdar://8594790 |
3 | |
4 | extern "C" { |
5 | extern "C" void *_Block_copy(const void *aBlock); |
6 | extern "C" void _Block_release(const void *aBlock); |
7 | } |
8 | |
9 | class A { |
10 | public: |
11 | int x; |
12 | A(const A &o); |
13 | A(); |
14 | virtual ~A(); |
15 | void hello() const; |
16 | }; |
17 | |
18 | int |
19 | main() |
20 | { |
21 | A a; |
22 | void (^c)(void) = ((__typeof(^{ a.hello(); }))_Block_copy((const void *)(^{ a.hello(); }))); |
23 | c(); |
24 | _Block_release((const void *)(c)); |
25 | return 0; |
26 | } |
27 | |
28 | // CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_ |
29 | // CHECK: call void @_ZN1AC1ERKS_ |
30 | |
31 | |
32 | // CHECK-LABEL:define linkonce_odr hidden void @__destroy_helper_block_ |
33 | // CHECK: call void @_ZN1AD1Ev |
34 | |