// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s | |
// rdar://8594790 | |
extern "C" { | |
extern "C" void *_Block_copy(const void *aBlock); | |
extern "C" void _Block_release(const void *aBlock); | |
} | |
class A { | |
public: | |
int x; | |
A(const A &o); | |
A(); | |
virtual ~A(); | |
void hello() const; | |
}; | |
int | |
main() | |
{ | |
A a; | |
void (^c)(void) = ((__typeof(^{ a.hello(); }))_Block_copy((const void *)(^{ a.hello(); }))); | |
c(); | |
_Block_release((const void *)(c)); | |
return 0; | |
} | |
// CHECK-LABEL: define internal void @__copy_helper_block_ | |
// CHECK: call void @_ZN1AC1ERKS_ | |
// CHECK-LABEL:define internal void @__destroy_helper_block_ | |
// CHECK: call void @_ZN1AD1Ev |