p14-ir.cpp revision eb8c670d2949eb62005eca36c64c9461f2a2173e
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -o - %s | FileCheck %s
2
3// Copy constructor
4struct X0 {
5  X0();
6  X0(const X0 &) throw();
7  X0(X0 &);
8};
9
10struct X1 {
11  X1();
12  X1(const X1 &) throw();
13};
14
15struct X2 : X1 {
16  X2();
17};
18struct X3 : X0, X1 {
19  X3();
20};
21
22struct X4 {
23  X4(X4 &) throw();
24};
25
26struct X5 : X0, X4 { };
27
28void test(X2 x2, X3 x3, X5 x5) {
29  // CHECK: define linkonce_odr void @_ZN2X2C1ERKS_
30  // CHECK-NOT: define
31  // CHECK: call void @__cxa_call_unexpected
32  // CHECK-NOT: define
33  // CHECK: ret void
34  X2 x2a(x2);
35  // CHECK: define linkonce_odr void @_ZN2X3C1ERKS_
36  // CHECK-NOT: define
37  // CHECK: call void @__cxa_call_unexpected
38  // CHECK-NOT: define
39  // CHECK: ret void
40  X3 x3a(x3);
41  // CHECK: define linkonce_odr void @_ZN2X5C1ERS_
42  // CHECK-NOT: call void @__cxa_call_unexpected
43  // CHECK: ret void
44  X5 x5a(x5);
45}
46
47// Default constructor
48struct X6 {
49  X6() throw();
50};
51
52struct X7 {
53  X7();
54};
55
56struct X8 : X6 { };
57struct X9 : X6, X7 { };
58
59void test() {
60  // CHECK: define linkonce_odr void @_ZN2X8C1Ev
61  // CHECK-NOT: define
62  // CHECK: call void @__cxa_call_unexpected
63  // CHECK-NOT: define
64  // CHECK: ret void
65  X8();
66  // CHECK: define linkonce_odr void @_ZN2X9C1Ev
67  // CHECK-NOT: call void @__cxa_call_unexpected
68  // CHECK: ret void
69  X9();
70}
71