xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/testsuite/gdb.base/store.c (revision a5a4af3bd380a7b58b758d9b311cef9f7c34aeb4)
1*a5a4af3bSchristos /* Check that GDB can correctly update a value, living in a register,
2*a5a4af3bSchristos    in the target.  This pretty much relies on the compiler taking heed
3*a5a4af3bSchristos    of requests for values to be stored in registers.  */
4*a5a4af3bSchristos 
5*a5a4af3bSchristos /* NOTE: carlton/2002-12-05: These functions were all static, but for
6*a5a4af3bSchristos    whatever reason that caused GCC 3.1 to optimize away some of the
7*a5a4af3bSchristos    function calls within main even when no optimization flags were
8*a5a4af3bSchristos    passed.  */
9*a5a4af3bSchristos 
10*a5a4af3bSchristos typedef signed char charest;
11*a5a4af3bSchristos 
12*a5a4af3bSchristos charest
add_charest(register charest u,register charest v)13*a5a4af3bSchristos add_charest (register charest u, register charest v)
14*a5a4af3bSchristos {
15*a5a4af3bSchristos   return u + v;
16*a5a4af3bSchristos }
17*a5a4af3bSchristos 
18*a5a4af3bSchristos short
add_short(register short u,register short v)19*a5a4af3bSchristos add_short (register short u, register short v)
20*a5a4af3bSchristos {
21*a5a4af3bSchristos   return u + v;
22*a5a4af3bSchristos }
23*a5a4af3bSchristos 
24*a5a4af3bSchristos int
add_int(register int u,register int v)25*a5a4af3bSchristos add_int (register int u, register int v)
26*a5a4af3bSchristos {
27*a5a4af3bSchristos   return u + v;
28*a5a4af3bSchristos }
29*a5a4af3bSchristos 
30*a5a4af3bSchristos long
add_long(register long u,register long v)31*a5a4af3bSchristos add_long (register long u, register long v)
32*a5a4af3bSchristos {
33*a5a4af3bSchristos   return u + v;
34*a5a4af3bSchristos }
35*a5a4af3bSchristos 
36*a5a4af3bSchristos typedef long long longest;
37*a5a4af3bSchristos 
38*a5a4af3bSchristos longest
add_longest(register longest u,register longest v)39*a5a4af3bSchristos add_longest (register longest u, register longest v)
40*a5a4af3bSchristos {
41*a5a4af3bSchristos   return u + v;
42*a5a4af3bSchristos }
43*a5a4af3bSchristos 
44*a5a4af3bSchristos float
add_float(register float u,register float v)45*a5a4af3bSchristos add_float (register float u, register float v)
46*a5a4af3bSchristos {
47*a5a4af3bSchristos   return u + v;
48*a5a4af3bSchristos }
49*a5a4af3bSchristos 
50*a5a4af3bSchristos double
add_double(register double u,register double v)51*a5a4af3bSchristos add_double (register double u, register double v)
52*a5a4af3bSchristos {
53*a5a4af3bSchristos   return u + v;
54*a5a4af3bSchristos }
55*a5a4af3bSchristos 
56*a5a4af3bSchristos typedef long double doublest;
57*a5a4af3bSchristos 
58*a5a4af3bSchristos doublest
add_doublest(register doublest u,register doublest v)59*a5a4af3bSchristos add_doublest (register doublest u, register doublest v)
60*a5a4af3bSchristos {
61*a5a4af3bSchristos   return u + v;
62*a5a4af3bSchristos }
63*a5a4af3bSchristos 
64*a5a4af3bSchristos /* */
65*a5a4af3bSchristos 
66*a5a4af3bSchristos charest
wack_charest(register charest u,register charest v)67*a5a4af3bSchristos wack_charest (register charest u, register charest v)
68*a5a4af3bSchristos {
69*a5a4af3bSchristos   register charest l = u, r = v;
70*a5a4af3bSchristos   l = add_charest (l, r);
71*a5a4af3bSchristos   return l + r;
72*a5a4af3bSchristos }
73*a5a4af3bSchristos 
74*a5a4af3bSchristos short
wack_short(register short u,register short v)75*a5a4af3bSchristos wack_short (register short u, register short v)
76*a5a4af3bSchristos {
77*a5a4af3bSchristos   register short l = u, r = v;
78*a5a4af3bSchristos   l = add_short (l, r);
79*a5a4af3bSchristos   return l + r;
80*a5a4af3bSchristos }
81*a5a4af3bSchristos 
82*a5a4af3bSchristos int
wack_int(register int u,register int v)83*a5a4af3bSchristos wack_int (register int u, register int v)
84*a5a4af3bSchristos {
85*a5a4af3bSchristos   register int l = u, r = v;
86*a5a4af3bSchristos   l = add_int (l, r);
87*a5a4af3bSchristos   return l + r;
88*a5a4af3bSchristos }
89*a5a4af3bSchristos 
90*a5a4af3bSchristos long
wack_long(register long u,register long v)91*a5a4af3bSchristos wack_long (register long u, register long v)
92*a5a4af3bSchristos {
93*a5a4af3bSchristos   register long l = u, r = v;
94*a5a4af3bSchristos   l = add_long (l, r);
95*a5a4af3bSchristos   return l + r;
96*a5a4af3bSchristos }
97*a5a4af3bSchristos 
98*a5a4af3bSchristos long
wack_longest(register longest u,register longest v)99*a5a4af3bSchristos wack_longest (register longest u, register longest v)
100*a5a4af3bSchristos {
101*a5a4af3bSchristos   register longest l = u, r = v;
102*a5a4af3bSchristos   l = add_longest (l, r);
103*a5a4af3bSchristos   return l + r;
104*a5a4af3bSchristos }
105*a5a4af3bSchristos 
106*a5a4af3bSchristos float
wack_float(register float u,register float v)107*a5a4af3bSchristos wack_float (register float u, register float v)
108*a5a4af3bSchristos {
109*a5a4af3bSchristos   register float l = u, r = v;
110*a5a4af3bSchristos   l = add_float (l, r);
111*a5a4af3bSchristos   return l + r;
112*a5a4af3bSchristos }
113*a5a4af3bSchristos 
114*a5a4af3bSchristos double
wack_double(register double u,register double v)115*a5a4af3bSchristos wack_double (register double u, register double v)
116*a5a4af3bSchristos {
117*a5a4af3bSchristos   register double l = u, r = v;
118*a5a4af3bSchristos   l = add_double (l, r);
119*a5a4af3bSchristos   return l + r;
120*a5a4af3bSchristos }
121*a5a4af3bSchristos 
122*a5a4af3bSchristos doublest
wack_doublest(register doublest u,register doublest v)123*a5a4af3bSchristos wack_doublest (register doublest u, register doublest v)
124*a5a4af3bSchristos {
125*a5a4af3bSchristos   register doublest l = u, r = v;
126*a5a4af3bSchristos   l = add_doublest (l, r);
127*a5a4af3bSchristos   return l + r;
128*a5a4af3bSchristos }
129*a5a4af3bSchristos 
130*a5a4af3bSchristos /* */
131*a5a4af3bSchristos 
132*a5a4af3bSchristos struct s_1 { short s[1]; } z_1, s_1;
133*a5a4af3bSchristos struct s_2 { short s[2]; } z_2, s_2;
134*a5a4af3bSchristos struct s_3 { short s[3]; } z_3, s_3;
135*a5a4af3bSchristos struct s_4 { short s[4]; } z_4, s_4;
136*a5a4af3bSchristos 
137*a5a4af3bSchristos struct s_1
add_struct_1(struct s_1 s)138*a5a4af3bSchristos add_struct_1 (struct s_1 s)
139*a5a4af3bSchristos {
140*a5a4af3bSchristos   int i;
141*a5a4af3bSchristos   for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
142*a5a4af3bSchristos     {
143*a5a4af3bSchristos       s.s[i] = s.s[i] + s.s[i];
144*a5a4af3bSchristos     }
145*a5a4af3bSchristos   return s;
146*a5a4af3bSchristos }
147*a5a4af3bSchristos 
148*a5a4af3bSchristos struct s_2
add_struct_2(struct s_2 s)149*a5a4af3bSchristos add_struct_2 (struct s_2 s)
150*a5a4af3bSchristos {
151*a5a4af3bSchristos   int i;
152*a5a4af3bSchristos   for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
153*a5a4af3bSchristos     {
154*a5a4af3bSchristos       s.s[i] = s.s[i] + s.s[i];
155*a5a4af3bSchristos     }
156*a5a4af3bSchristos   return s;
157*a5a4af3bSchristos }
158*a5a4af3bSchristos 
159*a5a4af3bSchristos struct s_3
add_struct_3(struct s_3 s)160*a5a4af3bSchristos add_struct_3 (struct s_3 s)
161*a5a4af3bSchristos {
162*a5a4af3bSchristos   int i;
163*a5a4af3bSchristos   for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
164*a5a4af3bSchristos     {
165*a5a4af3bSchristos       s.s[i] = s.s[i] + s.s[i];
166*a5a4af3bSchristos     }
167*a5a4af3bSchristos   return s;
168*a5a4af3bSchristos }
169*a5a4af3bSchristos 
170*a5a4af3bSchristos struct s_4
add_struct_4(struct s_4 s)171*a5a4af3bSchristos add_struct_4 (struct s_4 s)
172*a5a4af3bSchristos {
173*a5a4af3bSchristos   int i;
174*a5a4af3bSchristos   for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
175*a5a4af3bSchristos     {
176*a5a4af3bSchristos       s.s[i] = s.s[i] + s.s[i];
177*a5a4af3bSchristos     }
178*a5a4af3bSchristos   return s;
179*a5a4af3bSchristos }
180*a5a4af3bSchristos 
181*a5a4af3bSchristos struct s_1
wack_struct_1(void)182*a5a4af3bSchristos wack_struct_1 (void)
183*a5a4af3bSchristos {
184*a5a4af3bSchristos   int i; register struct s_1 u = z_1;
185*a5a4af3bSchristos   for (i = 0; i < sizeof (s_1) / sizeof (s_1.s[0]); i++) { s_1.s[i] = i + 1; }
186*a5a4af3bSchristos   u = add_struct_1 (u);
187*a5a4af3bSchristos   return u;
188*a5a4af3bSchristos }
189*a5a4af3bSchristos 
190*a5a4af3bSchristos struct s_2
wack_struct_2(void)191*a5a4af3bSchristos wack_struct_2 (void)
192*a5a4af3bSchristos {
193*a5a4af3bSchristos   int i; register struct s_2 u = z_2;
194*a5a4af3bSchristos   for (i = 0; i < sizeof (s_2) / sizeof (s_2.s[0]); i++) { s_2.s[i] = i + 1; }
195*a5a4af3bSchristos   u = add_struct_2 (u);
196*a5a4af3bSchristos   return u;
197*a5a4af3bSchristos }
198*a5a4af3bSchristos 
199*a5a4af3bSchristos struct s_3
wack_struct_3(void)200*a5a4af3bSchristos wack_struct_3 (void)
201*a5a4af3bSchristos {
202*a5a4af3bSchristos   int i; register struct s_3 u = z_3;
203*a5a4af3bSchristos   for (i = 0; i < sizeof (s_3) / sizeof (s_3.s[0]); i++) { s_3.s[i] = i + 1; }
204*a5a4af3bSchristos   u = add_struct_3 (u);
205*a5a4af3bSchristos   return u;
206*a5a4af3bSchristos }
207*a5a4af3bSchristos 
208*a5a4af3bSchristos struct s_4
wack_struct_4(void)209*a5a4af3bSchristos wack_struct_4 (void)
210*a5a4af3bSchristos {
211*a5a4af3bSchristos   int i; register struct s_4 u = z_4;
212*a5a4af3bSchristos   for (i = 0; i < sizeof (s_4) / sizeof (s_4.s[0]); i++) { s_4.s[i] = i + 1; }
213*a5a4af3bSchristos   u = add_struct_4 (u);
214*a5a4af3bSchristos   return u;
215*a5a4af3bSchristos }
216*a5a4af3bSchristos 
217*a5a4af3bSchristos /* */
218*a5a4af3bSchristos 
219*a5a4af3bSchristos struct f_1 {unsigned i:1;unsigned j:1;unsigned k:1; } f_1 = {1,1,1}, F_1;
220*a5a4af3bSchristos struct f_2 {unsigned i:2;unsigned j:2;unsigned k:2; } f_2 = {1,1,1}, F_2;
221*a5a4af3bSchristos struct f_3 {unsigned i:3;unsigned j:3;unsigned k:3; } f_3 = {1,1,1}, F_3;
222*a5a4af3bSchristos struct f_4 {unsigned i:4;unsigned j:4;unsigned k:4; } f_4 = {1,1,1}, F_4;
223*a5a4af3bSchristos 
224*a5a4af3bSchristos struct f_1
wack_field_1(void)225*a5a4af3bSchristos wack_field_1 (void)
226*a5a4af3bSchristos {
227*a5a4af3bSchristos   register struct f_1 u = f_1;
228*a5a4af3bSchristos   return u;
229*a5a4af3bSchristos }
230*a5a4af3bSchristos 
231*a5a4af3bSchristos struct f_2
wack_field_2(void)232*a5a4af3bSchristos wack_field_2 (void)
233*a5a4af3bSchristos {
234*a5a4af3bSchristos   register struct f_2 u = f_2;
235*a5a4af3bSchristos   return u;
236*a5a4af3bSchristos }
237*a5a4af3bSchristos 
238*a5a4af3bSchristos struct f_3
wack_field_3(void)239*a5a4af3bSchristos wack_field_3 (void)
240*a5a4af3bSchristos {
241*a5a4af3bSchristos   register struct f_3 u = f_3;
242*a5a4af3bSchristos   return u;
243*a5a4af3bSchristos }
244*a5a4af3bSchristos 
245*a5a4af3bSchristos struct f_4
wack_field_4(void)246*a5a4af3bSchristos wack_field_4 (void)
247*a5a4af3bSchristos {
248*a5a4af3bSchristos   register struct f_4 u = f_4;
249*a5a4af3bSchristos   return u;
250*a5a4af3bSchristos }
251*a5a4af3bSchristos 
252*a5a4af3bSchristos /* */
253*a5a4af3bSchristos 
254*a5a4af3bSchristos int
main()255*a5a4af3bSchristos main ()
256*a5a4af3bSchristos {
257*a5a4af3bSchristos   /* These calls are for current frame test.  */
258*a5a4af3bSchristos   wack_charest (-1, -2);
259*a5a4af3bSchristos   wack_short (-1, -2);
260*a5a4af3bSchristos   wack_int (-1, -2);
261*a5a4af3bSchristos   wack_long (-1, -2);
262*a5a4af3bSchristos   wack_longest (-1, -2);
263*a5a4af3bSchristos   wack_float (-1, -2);
264*a5a4af3bSchristos   wack_double (-1, -2);
265*a5a4af3bSchristos   wack_doublest (-1, -2);
266*a5a4af3bSchristos 
267*a5a4af3bSchristos   /* These calls are for up frame.  */
268*a5a4af3bSchristos   wack_charest (-1, -2);
269*a5a4af3bSchristos   wack_short (-1, -2);
270*a5a4af3bSchristos   wack_int (-1, -2);
271*a5a4af3bSchristos   wack_long (-1, -2);
272*a5a4af3bSchristos   wack_longest (-1, -2);
273*a5a4af3bSchristos   wack_float (-1, -2);
274*a5a4af3bSchristos   wack_double (-1, -2);
275*a5a4af3bSchristos   wack_doublest (-1, -2);
276*a5a4af3bSchristos 
277*a5a4af3bSchristos   /* These calls are for current frame test.  */
278*a5a4af3bSchristos   wack_struct_1 ();
279*a5a4af3bSchristos   wack_struct_2 ();
280*a5a4af3bSchristos   wack_struct_3 ();
281*a5a4af3bSchristos   wack_struct_4 ();
282*a5a4af3bSchristos 
283*a5a4af3bSchristos   /* These calls are for up frame.  */
284*a5a4af3bSchristos   wack_struct_1 ();
285*a5a4af3bSchristos   wack_struct_2 ();
286*a5a4af3bSchristos   wack_struct_3 ();
287*a5a4af3bSchristos   wack_struct_4 ();
288*a5a4af3bSchristos 
289*a5a4af3bSchristos   wack_field_1 ();
290*a5a4af3bSchristos   wack_field_2 ();
291*a5a4af3bSchristos   wack_field_3 ();
292*a5a4af3bSchristos   wack_field_4 ();
293*a5a4af3bSchristos 
294*a5a4af3bSchristos   return 0;
295*a5a4af3bSchristos }
296