1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2019-2020 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18struct s1
19{
20  int x;
21  int y;
22} s1;
23
24struct s2
25{
26  int x;
27  int y;
28  struct
29  {
30    int z;
31    int a;
32  };
33} s2;
34
35struct s3
36{
37  int x;
38  int y;
39  struct
40  {
41    int z;
42    int a;
43    struct
44    {
45      int b;
46      int c;
47    };
48  };
49} s3;
50
51struct s4
52{
53  int x;
54  int y;
55  struct
56  {
57    int x;
58    int y;
59    struct
60    {
61      int x;
62      int y;
63    } l2;
64  } l1;
65} s4;
66
67struct s5
68{
69  union
70  {
71    int raw[3];
72    struct
73    {
74      int x;
75      int y;
76      int z;
77    };
78  };
79} s5;
80
81typedef struct
82{
83  union
84  {
85    int raw[3];
86    struct
87    {
88      int x;
89      int y;
90      int z;
91    };
92  };
93} s6_t;
94
95s6_t s6;
96
97struct s7
98{
99  struct
100  {
101    int x;
102    int y;
103  };
104  struct
105  {
106    int z;
107    int a;
108  };
109  struct
110  {
111    int b;
112    int c;
113  };
114} s7;
115
116struct s8
117{
118  int x;
119  int y;
120  struct
121  {
122    int z;
123    int a;
124    struct
125    {
126      int b;
127      int c;
128    };
129  } d1;
130} s8;
131
132struct s9
133{
134  int x;
135  int y;
136  struct
137  {
138    int k;
139    int j;
140    struct
141    {
142      int z;
143      int a;
144      struct
145      {
146        int b;
147        int c;
148      };
149    } d1;
150  };
151  struct
152  {
153    int z;
154    int a;
155    struct
156    {
157      int b;
158      int c;
159    };
160  } d2;
161} s9;
162
163struct s10
164{
165  int x[10];
166  int y;
167  struct
168  {
169    int k[10];
170    int j;
171    struct
172    {
173      int z;
174      int a;
175      struct
176      {
177        int b[10];
178        int c;
179      };
180    } d1;
181  };
182  struct
183  {
184    int z;
185    int a;
186    struct
187    {
188      int b[10];
189      int c;
190    };
191  } d2;
192} s10;
193
194struct s11
195{
196  int x;
197  char s[10];
198  struct
199  {
200    int z;
201    int a;
202  };
203} s11;
204
205/* The following are C++ inheritance testing.  */
206#ifdef __cplusplus
207
208/* This is non-virtual inheritance.  */
209struct C1 { int c1 = 1; } c1;
210struct C2 { int c2 = 2; } c2;
211struct C3 : C2 { int c3 = 3; } c3;
212struct C4 { int c4 = 4; } c4;
213struct C5 : C4 { int c5 = 5; } c5;
214struct C6 : C5 { int c6 = 6; } c6;
215struct C7 : C1, C3, C6 { int c7 = 7; } c7;
216
217/* This is virtual inheritance.  */
218struct V1 { int v1 = 1; } v1;
219struct V2 : virtual V1 { int v2 = 2; } v2;
220struct V3 : virtual V1 { int v3 = 3; } v3;
221struct V4 : virtual V2 { int v4 = 4; } v4;
222struct V5 : virtual V2 { int v5 = 1; } v5;
223struct V6 : virtual V2, virtual V3 { int v6 = 1; } v6;
224struct V7 : virtual V4, virtual V5, virtual V6 { int v7 = 1; } v7;
225
226#endif /* __cplusplus */
227
228int
229main ()
230{
231  return 0;
232}
233