return2.C   [plain text]


// { 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;
}