1// { dg-do assemble  }
2// GROUPS passed conversions
3// cvt file
4// Message-Id: <CC7oHn.B4F@izf.tno.nl>
5// From: tom@izfcs.izf.tno.nl (Tom Vijlbrief)
6// Subject: g++ 2.4.5 has problems with NON virtual shared base classes
7// Date: Mon, 23 Aug 1993 12:10:34 GMT
8
9
10#include        <stdio.h>
11
12#define FAIL
13
14class Base {
15public:
16  Base() { printf("Base::Base\n"); }
17  virtual ~Base() { printf("Base::~Base\n"); }
18  virtual void v() { printf("Base::v\n"); }
19};
20
21class Base2 {
22public:
23  Base2() { printf("Base2::Base2\n"); }
24  virtual ~Base2() { printf("Base2::~Base2\n"); }
25  virtual void v() { printf("Base2::v\n"); }
26};
27
28class A: public Base {
29public:
30  A() { printf("A::A\n"); }
31  ~A() { printf("A::~A\n"); }
32  virtual void va() { printf("A::va\n"); }
33};
34
35#ifdef FAIL
36class B: public Base {
37#else
38class B: public Base2 {
39#endif
40public:
41  B() { printf("B::B\n"); }
42  ~B() { printf("B::~B\n"); }
43  virtual void vb() { printf("B::vb\n"); }
44};
45
46class C: public A, public B {
47public:
48  C() { printf("C::C\n"); }
49  ~C() { printf("C::~C\n"); }
50  void va() { printf("C::va\n"); }
51};
52
53
54int main()
55{
56  C *cp= new C;
57  cp->va();
58  delete cp;
59}
60
61