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