34 lines
473 B
C
34 lines
473 B
C
// { 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;
|
|
}
|