1 // PR c++/34949
2 // { dg-do compile }
3 // { dg-options "-O3" }
4 
5 struct E {};
6 struct A
7 {
8   virtual void a (void *) = 0;
9 };
10 struct B
11 {
~BB12   virtual ~B () {};
13   unsigned int b1;
14   E **b2;
15   A *b3;
16 };
17 struct C : public B
18 {
19   ~C ();
20 };
~C()21 C::~C ()
22 {
23   for (unsigned int i = 0; i < b1; i++)
24     b3->a (b2);
25 }
26 struct D
27 {
~DD28   ~D () {}
29   C d;
30 };
~FF31 struct F { virtual ~F () {}; };
32 struct G { void g (); };
33 struct H : public F
34 {
35   virtual ~H ();
36   D *h1;
37   G *h2;
38 };
~H()39 H::~H ()
40 {
41   h2->g ();
42   delete h1;
43 }
44