1// { dg-do run  }
2// prms-id: 3068
3
4extern "C" int printf(const char *, ...);
5extern "C" void exit(int);
6
7class LB {
8public:
9  virtual int test() { return 0; }
10  virtual ~LB() { }
11protected:
12  LB() { }
13};
14
15class RRB {
16public:
17  virtual ~RRB() { }
18  virtual void test2(int a) { }
19};
20
21class RR : public RRB {
22public:
23    virtual ~RR() { }
24};
25
26class RL {
27public:
28  virtual void real(int a) {
29    printf("RL::real\n");
30  }
31};
32
33
34class R : public RL, public RR {
35public:
36  virtual void test3(int a) { }
37  virtual void test2(int a) { }
38};
39
40class L : public LB {
41};
42
43class C : public L, public R {
44public:
45  C() { }
46  virtual ~C() {
47    printf("C::~C\n");
48    exit(1);
49  }
50  virtual void real(int a) {
51    printf("RL::real\n");
52  }
53};
54
55int main() {
56    C& bb = *new C;
57    R& mv = bb;
58    bb.real(0);
59    mv.real(0);
60    return 0;
61}
62