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

int i;

struct A
{
  A () { i++; }
  ~A () { i--; }
};

struct B : public virtual A
{
  B () { throw 1; }
};

struct D: public B, virtual public A
{
};

void f()
{
  D d;
}

int main ()
{
  try {
    f();
  } catch (int) {
  }

  return i;
}

