p14-ir.cpp revision 9c0c1f333ab8f5a3da055b99ee94778689face17
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: call void @_ZN2X2C2ERKS_({{.*}}) nounwind 31 // CHECK-NEXT: ret void 32 // CHECK-NEXT: } 33 X2 x2a(x2); 34 // CHECK: define linkonce_odr void @_ZN2X3C1ERKS_ 35 // CHECK: call void @_ZN2X3C2ERKS_({{.*}}) nounwind 36 // CHECK-NEXT: ret void 37 // CHECK-NEXT: } 38 X3 x3a(x3); 39 // CHECK: define linkonce_odr void @_ZN2X5C1ERS_ 40 // CHECK-NOT: call void @__cxa_call_unexpected 41 // CHECK: ret void 42 X5 x5a(x5); 43} 44 45// Default constructor 46struct X6 { 47 X6() throw(); 48}; 49 50struct X7 { 51 X7(); 52}; 53 54struct X8 : X6 { }; 55struct X9 : X6, X7 { }; 56 57void test() { 58 // CHECK: define linkonce_odr void @_ZN2X8C1Ev 59 // CHECK: call void @_ZN2X8C2Ev({{.*}}) nounwind 60 // CHECK-NEXT: ret void 61 X8(); 62 // CHECK: define linkonce_odr void @_ZN2X9C1Ev 63 // CHECK: call void @_ZN2X9C2Ev({{.*}}){{$}} 64 // CHECK-NEXT: ret void 65 X9(); 66 67 // CHECK: define linkonce_odr void @_ZN2X9C2Ev 68 // CHECK: call void @_ZN2X6C2Ev({{.*}}) nounwind 69 // CHECK-NEXT: call void @_ZN2X7C2Ev({{.*}}){{$}} 70 // CHECK: ret void 71 72 // CHECK: define linkonce_odr void @_ZN2X8C2Ev 73 // CHECK: call void @_ZN2X6C2Ev({{.*}}) nounwind 74 // CHECK-NEXT: ret void 75} 76