aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.mike/eh24.C
blob: c9dd382f4697801c3f21ab00fc1ebe4816053e60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Special g++ Options: -fexceptions
// excess errors test - XFAIL a29k-*-* sparc64-*-elf sh-*-* arm-*-pe**-*

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;
}