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