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 main()19main() 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 internal void @__copy_helper_block_ 29 // CHECK: call void @_ZN1AC1ERKS_ 30 31 32 // CHECK-LABEL:define internal void @__destroy_helper_block_ 33 // CHECK: call void @_ZN1AD1Ev 34