Home | History | Annotate | Download | only in CodeGenCXX
      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 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