1 /* Check that GDB can correctly update a value, living in a register,
2 in the target. This pretty much relies on the compiler taking heed
3 of requests for values to be stored in registers. */
5 /* NOTE: carlton/2002-12-05: These functions were all static, but for
6 whatever reason that caused GCC 3.1 to optimize away some of the
7 function calls within main even when no optimization flags were
10 typedef signed char charest;
13 add_charest (register charest u, register charest v)
19 add_short (register short u, register short v)
25 add_int (register int u, register int v)
31 add_long (register long u, register long v)
36 typedef long long longest;
39 add_longest (register longest u, register longest v)
45 add_float (register float u, register float v)
51 add_double (register double u, register double v)
56 typedef long double doublest;
59 add_doublest (register doublest u, register doublest v)
67 wack_charest (register charest u, register charest v)
69 register charest l = u, r = v;
70 l = add_charest (l, r);
75 wack_short (register short u, register short v)
77 register short l = u, r = v;
83 wack_int (register int u, register int v)
85 register int l = u, r = v;
91 wack_long (register long u, register long v)
93 register long l = u, r = v;
99 wack_longest (register longest u, register longest v)
101 register longest l = u, r = v;
102 l = add_longest (l, r);
107 wack_float (register float u, register float v)
109 register float l = u, r = v;
110 l = add_float (l, r);
115 wack_double (register double u, register double v)
117 register double l = u, r = v;
118 l = add_double (l, r);
123 wack_doublest (register doublest u, register doublest v)
125 register doublest l = u, r = v;
126 l = add_doublest (l, r);
132 struct s_1 { short s[1]; } z_1, s_1;
133 struct s_2 { short s[2]; } z_2, s_2;
134 struct s_3 { short s[3]; } z_3, s_3;
135 struct s_4 { short s[4]; } z_4, s_4;
138 add_struct_1 (struct s_1 s)
141 for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
143 s.s[i] = s.s[i] + s.s[i];
149 add_struct_2 (struct s_2 s)
152 for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
154 s.s[i] = s.s[i] + s.s[i];
160 add_struct_3 (struct s_3 s)
163 for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
165 s.s[i] = s.s[i] + s.s[i];
171 add_struct_4 (struct s_4 s)
174 for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
176 s.s[i] = s.s[i] + s.s[i];
184 int i; register struct s_1 u = z_1;
185 for (i = 0; i < sizeof (s_1) / sizeof (s_1.s[0]); i++) { s_1.s[i] = i + 1; }
186 u = add_struct_1 (u);
193 int i; register struct s_2 u = z_2;
194 for (i = 0; i < sizeof (s_2) / sizeof (s_2.s[0]); i++) { s_2.s[i] = i + 1; }
195 u = add_struct_2 (u);
202 int i; register struct s_3 u = z_3;
203 for (i = 0; i < sizeof (s_3) / sizeof (s_3.s[0]); i++) { s_3.s[i] = i + 1; }
204 u = add_struct_3 (u);
211 int i; register struct s_4 u = z_4;
212 for (i = 0; i < sizeof (s_4) / sizeof (s_4.s[0]); i++) { s_4.s[i] = i + 1; }
213 u = add_struct_4 (u);
219 struct f_1 {unsigned i:1;unsigned j:1;unsigned k:1; } f_1 = {1,1,1}, F_1;
220 struct f_2 {unsigned i:2;unsigned j:2;unsigned k:2; } f_2 = {1,1,1}, F_2;
221 struct f_3 {unsigned i:3;unsigned j:3;unsigned k:3; } f_3 = {1,1,1}, F_3;
222 struct f_4 {unsigned i:4;unsigned j:4;unsigned k:4; } f_4 = {1,1,1}, F_4;
227 register struct f_1 u = f_1;
234 register struct f_2 u = f_2;
241 register struct f_3 u = f_3;
248 register struct f_4 u = f_4;
257 /* These calls are for current frame test. */
258 wack_charest (-1, -2);
262 wack_longest (-1, -2);
264 wack_double (-1, -2);
265 wack_doublest (-1, -2);
267 /* These calls are for up frame. */
268 wack_charest (-1, -2);
272 wack_longest (-1, -2);
274 wack_double (-1, -2);
275 wack_doublest (-1, -2);
277 /* These calls are for current frame test. */
283 /* These calls are for up frame. */