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

extern "C" void abort ();

int j;

struct S {
  static S* s[5];

  S () { s[j++] = this; }
  S (const S&) { s[j++] = this; }
  ~S () { 
    for (int k = 0; k < j; ++k)
      if (s[k] == this)
	return;
    abort ();
  }
};

S* S::s[5];

struct T {
  int i;
  S s;
};

T t;

T f () {
  return t;
}

void g (S) {
}

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

