80 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -o %t %s2// RUN: not grep "_ZN1XaSERK1X" %t3 4extern "C" int printf(...);5 6struct 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 20struct 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 33struct 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 43struct 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 53struct 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 69X srcX; 70X dstX; 71X dstY; 72 73int main() {74 dstY = dstX = srcX;75 srcX.pr();76 dstX.pr();77 dstY.pr();78}79 80