1 // { dg-do run }
2 
3 extern "C" void abort ();
4 
5 int d = 5;
6 
7 struct B
8 {
9   int x;
BB10   B (int i) : x (i) { }
~BB11   ~B () { if (d-- != x) abort (); }
12 };
13 
14 struct C1 : public B {
C1C115   C1 (int i) : B (i) {}
16 };
17 
18 struct C2 : public B {
C2C219   C2 (int i) : B (i) {}
20 };
21 
22 struct D : public B {
DD23   D (int i) : B (i) {}
24 };
25 
26 struct E : public B {
EE27   E (int i) : B (i) {}
28 };
29 
30 struct A
31   : public C1, C2, virtual public D, virtual public E
32 {
AA33   A () : D (0), E (1), C1 (2), C2 (3), x1(4), x2(5) {}
34   B x1;
35   B x2;
36 };
37 
38 
main()39 int main ()
40 {
41   A a;
42   return 0;
43 }
44