1// This first batch of classes are for PR 11226. 2namespace mc { 3 class Base { 4 protected: 5 int x; 6 7 public: 8 Base(void) { x = 2; }; 9 }; 10} 11 12namespace ph { 13 class Middle: public virtual mc::Base { 14 protected: 15 int y; 16 17 public: 18 Middle(void): mc::Base() { y = 3; }; 19 20 int get_y(void) 21 { 22 return y; // breakpoint 1 23 }; 24 }; 25 26 class Derived: public virtual Middle { 27 protected: 28 int z; 29 30 public: 31 Derived(void): Middle() { z = 4; }; 32 33 int get_z(void) 34 { 35 return z; // breakpoint 2 36 }; 37 }; 38} 39 40// These classes are for PR 9629. 41struct A {}; 42struct B : virtual A {}; 43 44struct C {int v; C() {v=11;};}; 45struct D:virtual C{}; 46 47class E:B,D{}; 48 49// These classes are for another regression test, from 50// https://bugzilla.redhat.com/show_bug.cgi?id=560741 51 52class RHA 53{ 54public: 55 RHA() : mA(0xaaaaaaaa) {} 56 virtual void a() = 0; 57 int mA; 58}; 59 60class RHB 61{ 62public: 63 RHB() : mB(0xbbbbbbbb) {} 64 virtual void b() = 0; 65 int mB; 66}; 67 68class RHC : public RHA, 69 public RHB 70{ 71public: 72 RHC() : RHA(), RHB() {} 73 virtual void a() {} 74 virtual void b() {} 75}; 76 77class RTTI_base 78{ 79public: 80 virtual ~RTTI_base() {} 81}; 82 83class RTTI_data 84{ 85public: 86 RTTI_base base; 87 int data; 88 RTTI_data() : data(1) {} 89}; 90 91/* These classes are for testing pointer adjustment when printing a 92 pointer into a virtual base, with print object on. */ 93struct VirtualBase { 94 int x; 95 96 virtual ~VirtualBase() {} 97}; 98 99struct VirtualMiddleA : public virtual VirtualBase { 100 /* Make sure the vbase offset of Virtual::VirtualBaseB is larger 101 than what fits in one byte. */ 102 int y[300]; 103 104 virtual ~VirtualMiddleA() {} 105}; 106 107struct VirtualMiddleB : public virtual VirtualBase { 108 int y; 109 110 virtual ~VirtualMiddleB() {} 111}; 112 113struct Virtual : public virtual VirtualMiddleA, public virtual VirtualMiddleB { 114 int z; 115 116 virtual ~Virtual() {} 117}; 118 119Virtual virtual_o; 120VirtualMiddleB *virtual_middle_b = &virtual_o; 121 122int main() { 123 ph::Derived tst; 124 tst.get_y(); 125 tst.get_z(); 126 127 E *e = new E; 128 RHB *b = new RHC(); 129 RTTI_data rtti_data; 130 131 return 0; // breakpoint 3 132} 133