// { dg-do run  }
// PRMS Id: 5368
// Bug: the X temporary in foo() is not destroyed.
int c = 0;
struct X {
  X (int) { c++; }
  ~X() { c--; }
};
struct Y {
   Y(const X &) { }
};
Y foo() { 
  return X(3); 
}
int main()
{
  foo();
  return c;
}
// { dg-do run  }
// PRMS Id: 5368
// Bug: the X temporary in foo() is not destroyed.
int c = 0;
struct X {
  X (int) { c++; }
  ~X() { c--; }
};
struct Y {
   Y(const X &) { }
};
Y foo() { 
  return X(3); 
}
int main()
{
  foo();
  return c;
}