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()21C::~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 }; ~FF31struct 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()39H::~H () 40 { 41 h2->g (); 42 delete h1; 43 } 44