copy-constructor-elim.cpp revision 343a3cf57ee950b024bade8b6b0a2b51663f43cd
1// RUN: clang-cc -emit-llvm -o %t %s && 2// RUN: grep "_ZN1CC1ERK1C" %t | count 0 && 3// RUN: grep "_ZN1SC1ERK1S" %t | count 0 && 4// RUN: true 5 6extern "C" int printf(...); 7 8 9struct C { 10 C() : iC(6) {printf("C()\n"); } 11 C(const C& c) { printf("C(const C& c)\n"); } 12 int iC; 13}; 14 15C foo() { 16 return C(); 17}; 18 19class X { // ... 20public: 21 X(int) {} 22 X(const X&, int i = 1, int j = 2, C c = foo()) { 23 printf("X(const X&, %d, %d, %d)\n", i, j, c.iC); 24 } 25}; 26 27 28struct S { 29 S(); 30}; 31 32S::S() { printf("S()\n"); } 33 34void Call(S) {}; 35 36int main() 37{ 38 X a(1); 39 X b(a, 2); 40 X c = b; 41 X d(a, 5, 6); 42 S s; 43 Call(s); 44} 45