1// { dg-do run } 2// PRMS Id: 5331 3// Bug: the return value of foo is constructed in a temporary and then 4// copied into the return slot. This is not necessary. 5 6int c = 0; 7 8struct X { 9 X(int i) { } 10 X(X const &XX) { c = 1; } 11 ~X() { } 12}; 13 14const X foo() { 15 return X(3); 16} 17 18int main() 19{ 20 foo(); 21 return c; 22} 23