// { dg-do run  }
// GROUPS passed copy-ctors
/*

If I compile it with cfront (AT&T C++ Translator 2.00.02 08/25/89) and run it
I get:

	A::A()
	A::A(const A&)
	B::Bar()
	A::~A()
	A::~A()

If I compile it with g++ (gcc version 2.2.2) and run it I get:

	A::A()
	B::Bar()
	A::~A()
	A::~A()

*/
extern "C" int printf (const char *, ...);
extern "C" void exit (int);

int count = 0;

void
die (int x)
{
  if (x != ++count)
    {
      printf ("FAIL\n");
      exit (1);
    }
}
  

class A {
public:
  A() { die (1); }
  A(const A&) { die (2); }
  ~A() { count++; if (count != 4 && count != 5) die (-1); }
};

class B : public A {
public:
  void Bar() { die (3); }
};

void Foo(B b) { b.Bar(); }

int
main()
{
  B b;
  Foo(b);

  printf ("PASS\n");
}
