// { dg-do run } // PRMS Id: 5331 // Bug: the return value of foo is constructed in a temporary and then // copied into the return slot. This is not necessary. int c = 0; struct X { X(int i) { } X(X const &XX) { c = 1; } ~X() { } }; const X foo() { return X(3); } int main() { foo(); return c; }