// PR 14535 | |
// { dg-do run } | |
// { dg-options "-O -finline" } | |
// | |
// Original test case failure required that Raiser constructor be inlined. | |
extern "C" void abort(); | |
bool destructor_called = false; | |
struct B { | |
virtual void Run(){}; | |
}; | |
struct D : public B { | |
virtual void Run() | |
{ | |
struct O { | |
~O() { destructor_called = true; }; | |
} o; | |
struct Raiser { | |
Raiser() throw( int ) {throw 1;}; | |
} raiser; | |
}; | |
}; | |
int main() { | |
try { | |
D d; | |
static_cast<B&>(d).Run(); | |
} catch (...) {} | |
if (!destructor_called) | |
abort (); | |
} |