1 // { dg-do run  }
2 // { dg-options "-O2" }
3 // prms-id: 4736
4 
5 class Rep {
6 public:
foo()7   virtual int foo() { return 1; }
8 };
9 
10 class Rep_1 : public Rep {
11 };
12 
13 class VBaseMain {
14 public:
foo()15   virtual int foo() { return 2; }
16 };
17 
18 class OtherVBase {
19 public:
foo()20   virtual int foo() { return 3; }
21 };
22 
23 class Rep_2 : public Rep {
24 };
25 
26 class DVBase : public VBaseMain, public Rep_2, public OtherVBase {
27 public:
foo()28   virtual int foo() { return 4; }
29 };
30 
31 class Main : public Rep_1, virtual public DVBase {
32 public:
foo()33   virtual int foo() { return 5; }
34 };
35 
main()36 int main() {
37   Main m;
38   if (m.foo() != 5)
39     return 1;
40   if (((Rep*)(Rep_1*)&m)->foo() != 5)
41     return 2;
42   if (((DVBase*)&m)->foo() != 5)
43     return 3;
44   if (((VBaseMain*)(DVBase*)&m)->foo() != 5)
45     return 4;
46   if (((Rep*)(Rep_2*)(DVBase*)&m)->foo() != 5)
47     return 5;
48   if (((OtherVBase*)(DVBase*)&m)->foo() != 5)
49     return 6;
50 }
51