1 // RUN: %clang_cc1 -emit-llvm -o %t %s 2 // RUN: not grep "_ZN1XaSERK1X" %t 3 4 extern "C" int printf(...); 5 6 struct B { 7 B() : B1(3.14), B2(3.15), auB2(3.16) {} 8 float B1; 9 float B2; 10 void pr() { 11 printf("B1 = %f B2 = %f auB1 = %f\n", B1, B2, auB1); 12 } 13 14 union { 15 float auB1; 16 float auB2; 17 }; 18 }; 19 20 struct M { 21 M() : M1(10), M2(11) , auM1(12) {} 22 int M1; 23 int M2; 24 void pr() { 25 printf("M1 = %d M2 = %d auM1 = %d auM2 = %d\n", M1, M2, auM1, auM2); 26 } 27 union { 28 int auM1; 29 int auM2; 30 }; 31 }; 32 33 struct N : B { 34 N() : N1(20), N2(21) {} 35 int N1; 36 int N2; 37 void pr() { 38 printf("N1 = %d N2 = %d\n", N1, N2); 39 B::pr(); 40 } 41 }; 42 43 struct Q { 44 Q() : Q1(30), Q2(31) {} 45 int Q1; 46 int Q2; 47 void pr() { 48 printf("Q1 = %d Q2 = %d\n", Q1, Q2); 49 } 50 }; 51 52 53 struct X : M , N { 54 X() : d(0.0), d1(1.1), d2(1.2), d3(1.3) {} 55 double d; 56 double d1; 57 double d2; 58 double d3; 59 void pr() { 60 printf("d = %f d1 = %f d2 = %f d3 = %f\n", d, d1,d2,d3); 61 M::pr(); N::pr(); 62 q1.pr(); q2.pr(); 63 } 64 65 Q q1, q2; 66 }; 67 68 69 X srcX; 70 X dstX; 71 X dstY; 72 73 int main() { 74 dstY = dstX = srcX; 75 srcX.pr(); 76 dstX.pr(); 77 dstY.pr(); 78 } 79 80