// 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
