PR gdb/28480: Improve ambiguous member detection
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.cp / ambiguous.cc
CommitLineData
b6fc91c7 1class empty { };
a0b3c4fd 2
a0b3c4fd
JM
3class A1 {
4public:
5 int x;
6 int y;
7};
8
9class A2 {
10public:
11 int x;
12 int y;
13};
14
15class A3 {
16public:
17 int x;
18 int y;
19};
20
b6fc91c7
BL
21#if !defined (__GNUC__) || __GNUC__ > 7
22# define NO_UNIQUE_ADDRESS [[no_unique_address]]
23#else
24# define NO_UNIQUE_ADDRESS
25#endif
26
27class A4 {
28public:
29 NO_UNIQUE_ADDRESS empty x;
30};
31
a0b3c4fd
JM
32class X : public A1, public A2 {
33public:
34 int z;
35};
36
37class L : public A1 {
38public:
39 int z;
40};
41
42class LV : public virtual A1 {
43public:
44 int z;
45};
46
47class M : public A2 {
48public:
49 int w;
50};
51
52class N : public L, public M {
53public:
54 int r;
55};
56
57class K : public A1 {
58public:
59 int i;
60};
61
62class KV : public virtual A1 {
63public:
64 int i;
65};
66
67class J : public K, public L {
68public:
69 int j;
70};
71
72class JV : public KV, public LV {
73public:
74 int jv;
75};
76
77class JVA1 : public KV, public LV, public A1 {
78public:
79 int jva1;
80};
81
82class JVA2 : public KV, public LV, public A2 {
83public:
84 int jva2;
85};
86
87class JVA1V : public KV, public LV, public virtual A1 {
88public:
89 int jva1v;
90};
91
b6fc91c7
BL
92class JE : public A1, public A4 {
93public:
94};
95
a0b3c4fd
JM
96int 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;
b6fc91c7 111 JE je;
a0b3c4fd
JM
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
87a37e5e
PA
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
b6fc91c7
BL
193 je.A1::x = 1;
194
87a37e5e 195 return 0; /* set breakpoint here */
dc3a371e 196}
This page took 2.390202 seconds and 4 git commands to generate.