1// 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
39// 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_
43// CHECK-LABEL: define internal void @___ZN1XC2Ev_block_invoke
44// CHECK-LABEL: define internal void @___ZN1XC2Ev_block_invoke_
45// CHECK-LABEL: define internal void @___ZN1XC1Ev_block_invoke
46// CHECK-LABEL: define internal void @___ZN1XC1Ev_block_invoke_
47// CHECK-LABEL: define internal void @___ZN1XD2Ev_block_invoke
48// CHECK-LABEL: define internal void @___ZN1XD2Ev_block_invoke_
49