33 lines · cpp
1// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s2 3extern "C" {4extern "C" void *_Block_copy(const void *aBlock);5extern "C" void _Block_release(const void *aBlock);6}7 8class A {9public:10 int x;11 A(const A &o);12 A();13 virtual ~A();14 void hello() const;15};16 17int18main()19{20 A a;21 void (^c)(void) = ((__typeof(^{ a.hello(); }))_Block_copy((const void *)(^{ a.hello(); })));22 c();23 _Block_release((const void *)(c));24 return 0;25}26 27// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_28// CHECK: call void @_ZN1AC1ERKS_29 30 31// CHECK-LABEL:define linkonce_odr hidden void @__destroy_helper_block_32// CHECK: call void @_ZN1AD1Ev33