// Test that a fully-constructed base is destroyed before transferring
// control to the handler of a function-try-block.

// { dg-do run }

int ad;
int r;

struct A {
  ~A() { ++ad; }
};

struct B: public A {
  ~B();
};

B::~B ()
try
  {
    throw 1;
  }
catch (...)
  {
    if (!ad)
      r = 1;
    return;
  }

int main ()
{
  { B b; }
  return r;
}
