18fbe78f6SDaniel Dunbar // RUN: %clang_cc1 -emit-llvm -o %t %s
2*be8a91b7SRafael Espindola // RUN: not grep "_ZN1XaSERK1X" %t
34985b33fSFariborz Jahanian
44985b33fSFariborz Jahanian extern "C" int printf(...);
54985b33fSFariborz Jahanian
689d01eb3SFariborz Jahanian struct B {
BB73d693b22SFariborz Jahanian B() : B1(3.14), B2(3.15), auB2(3.16) {}
889d01eb3SFariborz Jahanian float B1;
989d01eb3SFariborz Jahanian float B2;
prB1089d01eb3SFariborz Jahanian void pr() {
113d693b22SFariborz Jahanian printf("B1 = %f B2 = %f auB1 = %f\n", B1, B2, auB1);
1289d01eb3SFariborz Jahanian }
133d693b22SFariborz Jahanian
143d693b22SFariborz Jahanian union {
153d693b22SFariborz Jahanian float auB1;
163d693b22SFariborz Jahanian float auB2;
173d693b22SFariborz Jahanian };
1889d01eb3SFariborz Jahanian };
1989d01eb3SFariborz Jahanian
2089d01eb3SFariborz Jahanian struct M {
MM213d693b22SFariborz Jahanian M() : M1(10), M2(11) , auM1(12) {}
2289d01eb3SFariborz Jahanian int M1;
2389d01eb3SFariborz Jahanian int M2;
prM2489d01eb3SFariborz Jahanian void pr() {
253d693b22SFariborz Jahanian printf("M1 = %d M2 = %d auM1 = %d auM2 = %d\n", M1, M2, auM1, auM2);
2689d01eb3SFariborz Jahanian }
273d693b22SFariborz Jahanian union {
283d693b22SFariborz Jahanian int auM1;
293d693b22SFariborz Jahanian int auM2;
303d693b22SFariborz Jahanian };
3189d01eb3SFariborz Jahanian };
3289d01eb3SFariborz Jahanian
3389d01eb3SFariborz Jahanian struct N : B {
NN3489d01eb3SFariborz Jahanian N() : N1(20), N2(21) {}
3589d01eb3SFariborz Jahanian int N1;
3689d01eb3SFariborz Jahanian int N2;
prN3789d01eb3SFariborz Jahanian void pr() {
3889d01eb3SFariborz Jahanian printf("N1 = %d N2 = %d\n", N1, N2);
3989d01eb3SFariborz Jahanian B::pr();
4089d01eb3SFariborz Jahanian }
4189d01eb3SFariborz Jahanian };
4289d01eb3SFariborz Jahanian
4389d01eb3SFariborz Jahanian struct Q {
QQ4489d01eb3SFariborz Jahanian Q() : Q1(30), Q2(31) {}
4589d01eb3SFariborz Jahanian int Q1;
4689d01eb3SFariborz Jahanian int Q2;
prQ4789d01eb3SFariborz Jahanian void pr() {
4889d01eb3SFariborz Jahanian printf("Q1 = %d Q2 = %d\n", Q1, Q2);
4989d01eb3SFariborz Jahanian }
5089d01eb3SFariborz Jahanian };
5189d01eb3SFariborz Jahanian
5289d01eb3SFariborz Jahanian
5389d01eb3SFariborz Jahanian struct X : M , N {
XX544985b33fSFariborz Jahanian X() : d(0.0), d1(1.1), d2(1.2), d3(1.3) {}
554985b33fSFariborz Jahanian double d;
564985b33fSFariborz Jahanian double d1;
574985b33fSFariborz Jahanian double d2;
584985b33fSFariborz Jahanian double d3;
prX594985b33fSFariborz Jahanian void pr() {
604985b33fSFariborz Jahanian printf("d = %f d1 = %f d2 = %f d3 = %f\n", d, d1,d2,d3);
6189d01eb3SFariborz Jahanian M::pr(); N::pr();
6289d01eb3SFariborz Jahanian q1.pr(); q2.pr();
634985b33fSFariborz Jahanian }
6489d01eb3SFariborz Jahanian
6589d01eb3SFariborz Jahanian Q q1, q2;
664985b33fSFariborz Jahanian };
674985b33fSFariborz Jahanian
684985b33fSFariborz Jahanian
694985b33fSFariborz Jahanian X srcX;
704985b33fSFariborz Jahanian X dstX;
714985b33fSFariborz Jahanian X dstY;
724985b33fSFariborz Jahanian
main()734985b33fSFariborz Jahanian int main() {
744985b33fSFariborz Jahanian dstY = dstX = srcX;
754985b33fSFariborz Jahanian srcX.pr();
764985b33fSFariborz Jahanian dstX.pr();
774985b33fSFariborz Jahanian dstY.pr();
784985b33fSFariborz Jahanian }
794985b33fSFariborz Jahanian
80