brintos

brintos / llvm-project-archived public Read only

0
0
Text · 745 B · 4e60b38 Raw
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