xref: /netbsd-src/external/gpl3/gdb/dist/gdb/testsuite/gdb.cp/ambiguous.cc (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1 class empty { };
2 
3 class A1 {
4 public:
5   int x;
6   int y;
7 };
8 
9 class A2 {
10 public:
11   int x;
12   int y;
13 };
14 
15 class A3 {
16 public:
17   int x;
18   int y;
19 };
20 
21 #if !defined (__GNUC__) || __GNUC__ > 7
22 # define NO_UNIQUE_ADDRESS [[no_unique_address]]
23 #else
24 # define NO_UNIQUE_ADDRESS
25 #endif
26 
27 class A4 {
28 public:
29     NO_UNIQUE_ADDRESS empty x;
30 };
31 
32 class X : public A1, public A2 {
33 public:
34   int z;
35 };
36 
37 class L : public A1 {
38 public:
39   int z;
40 };
41 
42 class LV : public virtual A1 {
43 public:
44   int z;
45 };
46 
47 class M : public A2 {
48 public:
49   int w;
50 };
51 
52 class N : public L, public M {
53 public:
54   int r;
55 };
56 
57 class K : public A1 {
58 public:
59   int i;
60 };
61 
62 class KV : public virtual A1 {
63 public:
64   int i;
65 };
66 
67 class J : public K, public L {
68 public:
69   int j;
70 };
71 
72 class JV : public KV, public LV {
73 public:
74   int jv;
75 };
76 
77 class JVA1 : public KV, public LV, public A1 {
78 public:
79   int jva1;
80 };
81 
82 class JVA2 : public KV, public LV, public A2 {
83 public:
84   int jva2;
85 };
86 
87 class JVA1V : public KV, public LV, public virtual A1 {
88 public:
89   int jva1v;
90 };
91 
92 class JE : public A1, public A4 {
93 public:
94 };
95 
main()96 int main()
97 {
98   A1 a1;
99   A2 a2;
100   A3 a3;
101   X x;
102   L l;
103   M m;
104   N n;
105   K k;
106   J j;
107   JV jv;
108   JVA1 jva1;
109   JVA2 jva2;
110   JVA1V jva1v;
111   JE je;
112 
113   int i;
114 
115   i += k.i + m.w + a1.x + a2.x + a3.x + x.z + l.z + n.r + j.j;
116 
117   /* Initialize all the fields.  Keep the order the same as in the
118      .exp file.  */
119 
120   a1.x = 1;
121   a1.y = 2;
122 
123   a2.x = 1;
124   a2.y = 2;
125 
126   a3.x = 1;
127   a3.y = 2;
128 
129   x.A1::x = 1;
130   x.A1::y = 2;
131   x.A2::x = 3;
132   x.A2::y = 4;
133   x.z = 5;
134 
135   l.x = 1;
136   l.y = 2;
137   l.z = 3;
138 
139   m.x = 1;
140   m.y = 2;
141   m.w = 3;
142 
143   n.A1::x = 1;
144   n.A1::y = 2;
145   n.A2::x = 3;
146   n.A2::y = 4;
147   n.w = 5;
148   n.r = 6;
149   n.z = 7;
150 
151   k.x = 1;
152   k.y = 2;
153   k.i = 3;
154 
155   j.K::x = 1;
156   j.K::y = 2;
157   j.L::x = 3;
158   j.L::y = 4;
159   j.i = 5;
160   j.z = 6;
161   j.j = 7;
162 
163   jv.x = 1;
164   jv.y = 2;
165   jv.i = 3;
166   jv.z = 4;
167   jv.jv = 5;
168 
169   jva1.KV::x = 1;
170   jva1.KV::y = 2;
171   jva1.LV::x = 3;
172   jva1.LV::y = 4;
173   jva1.z = 5;
174   jva1.i = 6;
175   jva1.jva1 = 7;
176 
177   jva2.KV::x = 1;
178   jva2.KV::y = 2;
179   jva2.LV::x = 3;
180   jva2.LV::y = 4;
181   jva2.A2::x = 5;
182   jva2.A2::y = 6;
183   jva2.z = 7;
184   jva2.i = 8;
185   jva2.jva2 = 9;
186 
187   jva1v.x = 1;
188   jva1v.y = 2;
189   jva1v.z = 3;
190   jva1v.i = 4;
191   jva1v.jva1v = 5;
192 
193   je.A1::x = 1;
194 
195   return 0; /* set breakpoint here */
196 }
197