1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-llvm -o %t %s 2d029cbbd18689a8110ea47aa33ed3387a7cf3674Rafael Espindola// RUN: not grep "_ZN1XaSERK1X" %t 3ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian 4ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanianextern "C" int printf(...); 5ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian 66dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanianstruct B { 7eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian B() : B1(3.14), B2(3.15), auB2(3.16) {} 86dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian float B1; 96dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian float B2; 106dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian void pr() { 11eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian printf("B1 = %f B2 = %f auB1 = %f\n", B1, B2, auB1); 126dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian } 13eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian 14eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian union { 15eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian float auB1; 16eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian float auB2; 17eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian }; 186dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian}; 196dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian 206dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanianstruct M { 21eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian M() : M1(10), M2(11) , auM1(12) {} 226dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian int M1; 236dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian int M2; 246dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian void pr() { 25eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian printf("M1 = %d M2 = %d auM1 = %d auM2 = %d\n", M1, M2, auM1, auM2); 266dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian } 27eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian union { 28eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian int auM1; 29eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian int auM2; 30eea0a5c6e347842fcfdd371f27c0e3b8fc644ee7Fariborz Jahanian }; 316dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian}; 326dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian 336dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanianstruct N : B { 346dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian N() : N1(20), N2(21) {} 356dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian int N1; 366dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian int N2; 376dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian void pr() { 386dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian printf("N1 = %d N2 = %d\n", N1, N2); 396dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian B::pr(); 406dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian } 416dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian}; 426dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian 436dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanianstruct Q { 446dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian Q() : Q1(30), Q2(31) {} 456dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian int Q1; 466dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian int Q2; 476dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian void pr() { 486dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian printf("Q1 = %d Q2 = %d\n", Q1, Q2); 496dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian } 506dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian}; 516dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian 526dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian 536dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanianstruct X : M , N { 54ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian X() : d(0.0), d1(1.1), d2(1.2), d3(1.3) {} 55ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian double d; 56ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian double d1; 57ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian double d2; 58ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian double d3; 59ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian void pr() { 60ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian printf("d = %f d1 = %f d2 = %f d3 = %f\n", d, d1,d2,d3); 616dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian M::pr(); N::pr(); 626dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian q1.pr(); q2.pr(); 63ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian } 646dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian 656dee5d81a6d43b1ff03fe47ab180a45bee44b371Fariborz Jahanian Q q1, q2; 66ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian}; 67ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian 68ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian 69ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz JahanianX srcX; 70ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz JahanianX dstX; 71ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz JahanianX dstY; 72ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian 73ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanianint main() { 74ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian dstY = dstX = srcX; 75ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian srcX.pr(); 76ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian dstX.pr(); 77ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian dstY.pr(); 78ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian} 79ad25883a644dd6b52c7923dd128a7d05fb26213cFariborz Jahanian 80