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()36int 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