// { dg-do run  }
// Origin: Mark Mitchell <mark@codesourcery.com>

extern "C" void abort ();

int j;

struct S {
  S () { ++j; }
  S (const S&) { ++j; }
  ~S () {
    if (--j < 0)
      abort ();
   }
};

struct T {
  void g (S) {
  };
};

struct U {
  int i;
  S s;
};

U u;

U f () { return u; }

int main ()
{
  T t;
  t.g (f ().s);
}
