1 // { dg-do run  }
2 // prms-id: 4246
3 
4 extern "C" void abort ();
5 int num_d;
6 
7 class A
8 {
9  public:
A()10   A() { }
~A()11   virtual  ~A() { }
id()12   virtual void id() { }
13 };
14 
15 class B
16 {
17  public:
B()18   B() { }
~B()19   virtual  ~B() { }
id()20   virtual void id() { }
21 };
22 
23 class C : public A, public B
24 {
25  public:
C()26   C() { }
~C()27   virtual  ~C() { }
id()28   void id() { abort(); }
29 };
30 
31 class D : public C
32 {
33  public:
D()34   D() { ++num_d; }
~D()35   virtual  ~D() { -- num_d; }
id()36   void id() { }
37 };
38 
main()39 int main()
40 {
41   D* dp2 = new D;
42   ((B*)dp2)->id();
43   delete (B*) dp2;
44 
45   B* bp1 = new D;
46   bp1->id();
47   delete bp1;
48   return num_d != 0;
49 }
50