1// PR 14535 2// { dg-do run } 3// { dg-options "-O -finline" } 4// 5// Original test case failure required that Raiser constructor be inlined. 6 7extern "C" void abort(); 8bool destructor_called = false; 9 10struct B { 11 virtual void Run(){}; 12}; 13 14 struct D : public B { 15 virtual void Run() 16 { 17 struct O { 18 ~O() { destructor_called = true; }; 19 } o; 20 21 struct Raiser { 22 Raiser() throw( int ) {throw 1;}; 23 } raiser; 24 }; 25 }; 26 27int main() { 28 try { 29 D d; 30 static_cast<B&>(d).Run(); 31 } catch (...) {} 32 33 if (!destructor_called) 34 abort (); 35} 36