// { dg-do run  }
// GROUPS passed destructors
// Check that when an object of a derived class is (implicitly)
// destructed (on exit from the block in which it is declared)
// that the destructor for the base class also gets executed.
//
// (also check that this execution doesn't seg-fault)

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

int derived_destructed;
int base_destructed;

struct base {
  int base_data_member;

  base()
  {
    base_data_member = 0x5e5e;
  }
  ~base()
  {
    base_destructed = 0x781f;
  }
};

struct derived : public base {
  int derived_data_member;

  derived()
  {
    derived_data_member = 0xe5e5;
  }
  ~derived()
  {
    derived_destructed = 0xf178;
  }
};


void test2 ();

int main ()
{
	test2 ();
	if ((base_destructed != 0x781f) || (derived_destructed != 0xf178))
	  { printf ("FAIL\n"); return 1; }
	else
	  printf ("PASS\n");
}

void test2 ()
{
	derived derived_object;

	derived_object.derived_data_member = 99;
}
