blob: 4ee6b1c10eb11f97bc0b81df0f6ad5d7aef8417b [file] [log] [blame]
Fariborz Jahanian564360b2010-06-24 00:08:06 +00001// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
2
3typedef void (^dispatch_block_t)(void);
4
5void dispatch_once(dispatch_block_t);
6
7class Zone {
8public:
9 Zone();
10 ~Zone();
11};
12
13Zone::Zone() {
14 dispatch_once(^{});
15 dispatch_once(^{});
16}
17
18Zone::~Zone() {
19 dispatch_once(^{});
20 dispatch_once(^{});
21}
22
23class X : public virtual Zone {
24 X();
25 ~X();
26};
27
28X::X() {
29 dispatch_once(^{});
30 dispatch_once(^{});
31};
32
33X::~X() {
34 dispatch_once(^{});
35 dispatch_once(^{});
36};
37
38
Fariborz Jahanian4904bf42012-06-26 16:06:38 +000039// CHECK: define internal void @___ZN4ZoneC2Ev_block_invoke
Fariborz Jahanian564360b2010-06-24 00:08:06 +000040// CHECK: define internal void @___ZN4ZoneC2Ev_block_invoke_
Fariborz Jahanian4904bf42012-06-26 16:06:38 +000041// CHECK: define internal void @___ZN4ZoneD2Ev_block_invoke
Fariborz Jahanian564360b2010-06-24 00:08:06 +000042// CHECK: define internal void @___ZN4ZoneD2Ev_block_invoke_
Fariborz Jahanian4904bf42012-06-26 16:06:38 +000043// CHECK: define internal void @___ZN1XC1Ev_block_invoke
Fariborz Jahanian564360b2010-06-24 00:08:06 +000044// CHECK: define internal void @___ZN1XC1Ev_block_invoke_
Fariborz Jahanian4904bf42012-06-26 16:06:38 +000045// CHECK: define internal void @___ZN1XC2Ev_block_invoke
Fariborz Jahanian564360b2010-06-24 00:08:06 +000046// CHECK: define internal void @___ZN1XC2Ev_block_invoke_
Fariborz Jahanian4904bf42012-06-26 16:06:38 +000047// CHECK: define internal void @___ZN1XD2Ev_block_invoke
Fariborz Jahanian564360b2010-06-24 00:08:06 +000048// CHECK: define internal void @___ZN1XD2Ev_block_invoke_