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: define internal void @___ZN4ZoneC2Ev_block_invoke_
40// CHECK: define internal void @___ZN4ZoneC2Ev_block_invoke_
41// CHECK: define internal void @___ZN4ZoneD2Ev_block_invoke_
42// CHECK: define internal void @___ZN4ZoneD2Ev_block_invoke_
43// CHECK: define internal void @___ZN1XC1Ev_block_invoke_
44// CHECK: define internal void @___ZN1XC1Ev_block_invoke_
45// CHECK: define internal void @___ZN1XC2Ev_block_invoke_
46// CHECK: define internal void @___ZN1XC2Ev_block_invoke_
47// CHECK: define internal void @___ZN1XD2Ev_block_invoke_
48// CHECK: define internal void @___ZN1XD2Ev_block_invoke_
49