1// { dg-do run { xfail sparc64-*-elf arm-*-pe } }
2// { dg-options "-fexceptions" }
3
4int fail = 0;
5
6struct A {
7  int ok;
8  A() {
9    ok = 1;
10  }
11  ~A() {
12    if (! ok)
13      fail = 1;
14    ok = 0;
15  }
16};
17
18main() {
19  try {
20    try {
21      A  a;
22      throw 1.0;
23    } catch (double i) {
24      A a1;
25      throw 1;    // make sure both a1 and a2 are not destroyed when we throw!
26    } catch (int i) {
27      A a2;
28      throw 1.0;
29    }
30  } catch (int i) {
31  }
32  return fail;
33}
34