34 lines
741 B
C++
34 lines
741 B
C++
|
// 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
|