1 // { dg-do run }
2
3 // Copyright (C) 2000 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 8 Mar 2000 <nathan@codesourcery.com>
5
6 // Derived from PR#7
7
8 // We need to destroy the thrown object when exiting the catch
9 // clause. That needs to destroy the original thrown object, not
10 // the caught one (which might be a base).
11
12 static int ok = 0;
13
14 struct A
15 {
AA16 A (){}
~AA17 virtual ~A () {}
18 };
19
20 struct B : virtual A
21 {
22 int value;
BB23 B ()
24 :value(10)
25 {}
~BB26 ~B()
27 {
28 if (value == 10)
29 ok = 1;
30 }
31 };
32
main()33 int main()
34 {
35 try {
36 throw B ();
37 } catch (A & e) {
38 }
39 return !ok;
40 }
41