1// { dg-do run  }
2extern "C" void abort();
3
4int ic;
5
6struct X
7{
8  X() { ++ic; }
9  X( const X & ) { ++ic; }
10 ~X() { if (--ic < 0) abort(); }
11};
12
13struct V
14{
15  virtual ~V() {}
16};
17
18struct A : public virtual V
19{
20};
21
22struct B : public virtual V
23{
24  virtual void foo( X ) = 0;
25};
26
27struct D : public A, public virtual B
28{
29  virtual void foo( X ) {}
30};
31
32int main()
33{
34  B *b = new D;
35  b->foo( X() );
36}
37