// { dg-do run { xfail sparc64-*-elf arm-*-pe } } // { dg-options "-fexceptions" } int fail = 0; struct A { int ok; A() { ok = 1; } ~A() { if (! ok) fail = 1; ok = 0; } }; main() { try { try { A a; throw 1.0; } catch (double i) { A a1; throw 1; // make sure both a1 and a2 are not destroyed when we throw! } catch (int i) { A a2; throw 1.0; } } catch (int i) { } return fail; }