1 /* This testcase is part of GDB, the GNU debugger.
3 Copyright 1996-2023 Free Software Foundation, Inc.
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.
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.
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/>. */
18 /* Useful abreviations. */
24 typedef long long tll
;
27 typedef long double tld
;
29 /* Force the type of each field. */
85 struct struct1
{tA a
;};
86 struct struct2
{tA a
; tB b
;};
87 struct struct3
{tA a
; tB b
; tC c
; };
88 struct struct4
{tA a
; tB b
; tC c
; tD d
; };
89 struct struct5
{tA a
; tB b
; tC c
; tD d
; tE e
; };
90 struct struct6
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; };
91 struct struct7
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; };
92 struct struct8
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; };
93 struct struct9
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; };
94 struct struct10
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; };
95 struct struct11
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; };
96 struct struct12
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; tL l
; };
97 struct struct13
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; tL l
; tM m
; };
98 struct struct14
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; tL l
; tM m
; tN n
; };
99 struct struct15
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; tL l
; tM m
; tN n
; tO o
; };
100 struct struct16
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; tL l
; tM m
; tN n
; tO o
; tP p
; };
101 struct struct17
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; tL l
; tM m
; tN n
; tO o
; tP p
; tQ q
; };
102 struct struct18
{tA a
; tB b
; tC c
; tD d
; tE e
; tF f
; tG g
; tH h
; tI i
; tJ j
; tK k
; tL l
; tM m
; tN n
; tO o
; tP p
; tQ q
; tR r
; };
104 struct struct1 foo1
= {'1'}, L1
;
105 struct struct2 foo2
= {'a','2'}, L2
;
106 struct struct3 foo3
= {'1','b','3'}, L3
;
107 struct struct4 foo4
= {'a','2','c','4'}, L4
;
108 struct struct5 foo5
= {'1','b','3','d','5'}, L5
;
109 struct struct6 foo6
= {'a','2','c','4','e','6'}, L6
;
110 struct struct7 foo7
= {'1','b','3','d','5','f','7'}, L7
;
111 struct struct8 foo8
= {'a','2','c','4','e','6','g','8'}, L8
;
112 struct struct9 foo9
= {'1','b','3','d','5','f','7','h','9'}, L9
;
113 struct struct10 foo10
= {'a','2','c','4','e','6','g','8','i','A'}, L10
;
114 struct struct11 foo11
= {'1','b','3','d','5','f','7','h','9','j','B'}, L11
;
115 struct struct12 foo12
= {'a','2','c','4','e','6','g','8','i','A','k','C'}, L12
;
116 struct struct13 foo13
= {'1','b','3','d','5','f','7','h','9','j','B','l','D'}, L13
;
117 struct struct14 foo14
= {'a','2','c','4','e','6','g','8','i','A','k','C','m','E'}, L14
;
118 struct struct15 foo15
= {'1','b','3','d','5','f','7','h','9','j','B','l','D','n','F'}, L15
;
119 struct struct16 foo16
= {'a','2','c','4','e','6','g','8','i','A','k','C','m','E','o','G'}, L16
;
120 struct struct17 foo17
= {'1','b','3','d','5','f','7','h','9','j','B','l','D','n','F','p','H'}, L17
;
121 struct struct18 foo18
= {'a','2','c','4','e','6','g','8','i','A','k','C','m','E','o','G','q','I'}, L18
;
123 struct struct1
fun1()
127 struct struct2
fun2()
131 struct struct3
fun3()
135 struct struct4
fun4()
139 struct struct5
fun5()
143 struct struct6
fun6()
147 struct struct7
fun7()
151 struct struct8
fun8()
155 struct struct9
fun9()
159 struct struct10
fun10()
163 struct struct11
fun11()
167 struct struct12
fun12()
171 struct struct13
fun13()
175 struct struct14
fun14()
179 struct struct15
fun15()
183 struct struct16
fun16()
187 struct struct17
fun17()
191 struct struct18
fun18()
196 void Fun1(struct struct1 foo1
)
200 void Fun2(struct struct2 foo2
)
204 void Fun3(struct struct3 foo3
)
208 void Fun4(struct struct4 foo4
)
212 void Fun5(struct struct5 foo5
)
216 void Fun6(struct struct6 foo6
)
220 void Fun7(struct struct7 foo7
)
224 void Fun8(struct struct8 foo8
)
228 void Fun9(struct struct9 foo9
)
232 void Fun10(struct struct10 foo10
)
236 void Fun11(struct struct11 foo11
)
240 void Fun12(struct struct12 foo12
)
244 void Fun13(struct struct13 foo13
)
248 void Fun14(struct struct14 foo14
)
252 void Fun15(struct struct15 foo15
)
256 void Fun16(struct struct16 foo16
)
260 void Fun17(struct struct17 foo17
)
264 void Fun18(struct struct18 foo18
)
273 L1
.a
= L2
.a
= L3
.a
= L4
.a
= L5
.a
= L6
.a
= L7
.a
= L8
.a
= L9
.a
= L10
.a
= L11
.a
= L12
.a
= L13
.a
= L14
.a
= L15
.a
= L16
.a
= L17
.a
= L18
.a
= 'Z';
275 L2
.b
= L3
.b
= L4
.b
= L5
.b
= L6
.b
= L7
.b
= L8
.b
= L9
.b
= L10
.b
= L11
.b
= L12
.b
= L13
.b
= L14
.b
= L15
.b
= L16
.b
= L17
.b
= L18
.b
= 'Z';
277 L3
.c
= L4
.c
= L5
.c
= L6
.c
= L7
.c
= L8
.c
= L9
.c
= L10
.c
= L11
.c
= L12
.c
= L13
.c
= L14
.c
= L15
.c
= L16
.c
= L17
.c
= L18
.c
= 'Z';
279 L4
.d
= L5
.d
= L6
.d
= L7
.d
= L8
.d
= L9
.d
= L10
.d
= L11
.d
= L12
.d
= L13
.d
= L14
.d
= L15
.d
= L16
.d
= L17
.d
= L18
.d
= 'Z';
281 L5
.e
= L6
.e
= L7
.e
= L8
.e
= L9
.e
= L10
.e
= L11
.e
= L12
.e
= L13
.e
= L14
.e
= L15
.e
= L16
.e
= L17
.e
= L18
.e
= 'Z';
283 L6
.f
= L7
.f
= L8
.f
= L9
.f
= L10
.f
= L11
.f
= L12
.f
= L13
.f
= L14
.f
= L15
.f
= L16
.f
= L17
.f
= L18
.f
= 'Z';
285 L7
.g
= L8
.g
= L9
.g
= L10
.g
= L11
.g
= L12
.g
= L13
.g
= L14
.g
= L15
.g
= L16
.g
= L17
.g
= L18
.g
= 'Z';
287 L8
.h
= L9
.h
= L10
.h
= L11
.h
= L12
.h
= L13
.h
= L14
.h
= L15
.h
= L16
.h
= L17
.h
= L18
.h
= 'Z';
289 L9
.i
= L10
.i
= L11
.i
= L12
.i
= L13
.i
= L14
.i
= L15
.i
= L16
.i
= L17
.i
= L18
.i
= 'Z';
291 L10
.j
= L11
.j
= L12
.j
= L13
.j
= L14
.j
= L15
.j
= L16
.j
= L17
.j
= L18
.j
= 'Z';
293 L11
.k
= L12
.k
= L13
.k
= L14
.k
= L15
.k
= L16
.k
= L17
.k
= L18
.k
= 'Z';
295 L12
.l
= L13
.l
= L14
.l
= L15
.l
= L16
.l
= L17
.l
= L18
.l
= 'Z';
297 L13
.m
= L14
.m
= L15
.m
= L16
.m
= L17
.m
= L18
.m
= 'Z';
299 L14
.n
= L15
.n
= L16
.n
= L17
.n
= L18
.n
= 'Z';
301 L15
.o
= L16
.o
= L17
.o
= L18
.o
= 'Z';
303 L16
.p
= L17
.p
= L18
.p
= 'Z';
310 static struct { char c
; } chartest
[256];
316 for (i
= 0; i
< 256; i
++)
318 chartest
[0].c
= 0; /* chartest-done */
339 /* An (almost-)infinite loop that first clears all the variables and then
340 calls each function. This "hack" is to make testing random
341 functions easier - "advance funN" is guaranteed to have always
342 been preceded by a global variable clearing zed call.
343 We don't let this run forever in case gdb crashes while testing,
344 we don't want to be left eating all cpu on the user's system. */
346 for (i
= 0; i
< 1000000; ++i
)