1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-llvm -o %t %s 2d029cbbd18689a8110ea47aa33ed3387a7cf3674Rafael Espindola// RUN: not grep "_ZN1CC1ERK1C" %t 3d029cbbd18689a8110ea47aa33ed3387a7cf3674Rafael Espindola// RUN: not grep "_ZN1SC1ERK1S" %t 46904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian 56904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanianextern "C" int printf(...); 66904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian 76904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian 86904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanianstruct C { 91eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump C() : iC(6) {printf("C()\n"); } 101eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump C(const C& c) { printf("C(const C& c)\n"); } 111eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump int iC; 126904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian}; 136904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian 146904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz JahanianC foo() { 156904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian return C(); 166904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian}; 176904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian 186904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanianclass X { // ... 196904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanianpublic: 201eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump X(int) {} 211eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump X(const X&, int i = 1, int j = 2, C c = foo()) { 221eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump printf("X(const X&, %d, %d, %d)\n", i, j, c.iC); 231eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump } 246904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian}; 256904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian 26343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanian 27343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanianstruct S { 28343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanian S(); 29343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanian}; 30343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanian 31343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz JahanianS::S() { printf("S()\n"); } 32343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanian 33343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanianvoid Call(S) {}; 34343a3cf57ee950b024bade8b6b0a2b51663f43cdFariborz Jahanian 351eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpint main() { 361eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump X a(1); 371eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump X b(a, 2); 381eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump X c = b; 391eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump X d(a, 5, 6); 401eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump S s; 411eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump Call(s); 426904cbb1f21002317387e8fc7b14b7f8c09d198fFariborz Jahanian} 43