blob: 0dc0ab00437faef42149a11bd2a67f27022a4af4 [file] [log] [blame]
Fariborz Jahanian9b5528d2010-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
Stephen Lin43622612013-08-15 06:47:53 +000039// CHECK-LABEL: define internal void @___ZN4ZoneC2Ev_block_invoke
40// CHECK-LABEL: define internal void @___ZN4ZoneC2Ev_block_invoke_
41// CHECK-LABEL: define internal void @___ZN4ZoneD2Ev_block_invoke
42// CHECK-LABEL: define internal void @___ZN4ZoneD2Ev_block_invoke_
Stephen Lin43622612013-08-15 06:47:53 +000043// CHECK-LABEL: define internal void @___ZN1XC2Ev_block_invoke
44// CHECK-LABEL: define internal void @___ZN1XC2Ev_block_invoke_
Rafael Espindolac3cde362013-12-09 14:51:17 +000045// CHECK-LABEL: define internal void @___ZN1XC1Ev_block_invoke
46// CHECK-LABEL: define internal void @___ZN1XC1Ev_block_invoke_
Stephen Lin43622612013-08-15 06:47:53 +000047// CHECK-LABEL: define internal void @___ZN1XD2Ev_block_invoke
48// CHECK-LABEL: define internal void @___ZN1XD2Ev_block_invoke_