// PR c++/34949 // { dg-do compile } // { dg-options "-O3" } struct E {}; struct A { virtual void a (void *) = 0; }; struct B { virtual ~B () {}; unsigned int b1; E **b2; A *b3; }; struct C : public B { ~C (); }; C::~C () { for (unsigned int i = 0; i < b1; i++) b3->a (b2); } struct D { ~D () {} C d; }; struct F { virtual ~F () {}; }; struct G { void g (); }; struct H : public F { virtual ~H (); D *h1; G *h2; }; H::~H () { h2->g (); delete h1; }