// { dg-do run } // simplified from testcase in Windows Developer Journal, // submitted by eyal.ben-david@aks.com // The initialization of a static local variable must be retried if a // previous try finished by throwing an exception [stmt.dcl]/4 extern "C" void abort (); struct foo { foo() { throw true; } }; void bar() { static foo baz; } int main() { try { bar(); // must throw } catch (bool) { try { bar(); // must throw again! } catch (bool) { return 0; } } abort(); }