1 |
330 |
jeremybenn |
static int filelocal = 1; /* In Data section */
|
2 |
|
|
static int filelocal_bss; /* In BSS section */
|
3 |
|
|
#ifndef __STDC__
|
4 |
|
|
#define const /**/
|
5 |
|
|
#endif
|
6 |
|
|
static const int filelocal_ro = 201; /* In Read-Only Data section */
|
7 |
|
|
|
8 |
|
|
extern void init1();
|
9 |
|
|
extern void foo();
|
10 |
|
|
|
11 |
|
|
int autovars (int bcd, int abc);
|
12 |
|
|
int localscopes (int x);
|
13 |
|
|
int useit (int val);
|
14 |
|
|
int useitp (const int *val);
|
15 |
|
|
void init0();
|
16 |
|
|
void marker1 ();
|
17 |
|
|
void marker2 ();
|
18 |
|
|
void marker3 ();
|
19 |
|
|
void marker4 ();
|
20 |
|
|
|
21 |
|
|
int main ()
|
22 |
|
|
{
|
23 |
|
|
#ifdef usestubs
|
24 |
|
|
set_debug_traps();
|
25 |
|
|
breakpoint();
|
26 |
|
|
#endif
|
27 |
|
|
init0 ();
|
28 |
|
|
foo ();
|
29 |
|
|
autovars (5, 6);
|
30 |
|
|
localscopes (0);
|
31 |
|
|
}
|
32 |
|
|
|
33 |
|
|
/* On some systems, such as AIX, unreferenced variables are deleted
|
34 |
|
|
from the executable. On other compilers, such as ARM RealView,
|
35 |
|
|
const variables without their address taken are deleted. */
|
36 |
|
|
void usestatics ()
|
37 |
|
|
{
|
38 |
|
|
useitp (&filelocal);
|
39 |
|
|
useitp (&filelocal_bss);
|
40 |
|
|
useitp (&filelocal_ro);
|
41 |
|
|
}
|
42 |
|
|
|
43 |
|
|
void init0 ()
|
44 |
|
|
{
|
45 |
|
|
filelocal_bss = 101;
|
46 |
|
|
init1 ();
|
47 |
|
|
}
|
48 |
|
|
|
49 |
|
|
/* This is to derail optimizer in localscopes.
|
50 |
|
|
Return 1 + 2 + . . . + N. */
|
51 |
|
|
#ifdef PROTOTYPES
|
52 |
|
|
int
|
53 |
|
|
sum_upto (int n)
|
54 |
|
|
#else
|
55 |
|
|
int
|
56 |
|
|
sum_upto (n)
|
57 |
|
|
int n;
|
58 |
|
|
#endif
|
59 |
|
|
{
|
60 |
|
|
int i;
|
61 |
|
|
int retval = 0;
|
62 |
|
|
|
63 |
|
|
for (i = 1; i <= n; ++i)
|
64 |
|
|
retval += i;
|
65 |
|
|
return retval;
|
66 |
|
|
}
|
67 |
|
|
|
68 |
|
|
#ifdef PROTOTYPES
|
69 |
|
|
int
|
70 |
|
|
useit (int val)
|
71 |
|
|
#else
|
72 |
|
|
int
|
73 |
|
|
useit (val) int val;
|
74 |
|
|
#endif
|
75 |
|
|
{
|
76 |
|
|
static int usedval;
|
77 |
|
|
|
78 |
|
|
usedval = val;
|
79 |
|
|
return val + sum_upto (0);
|
80 |
|
|
}
|
81 |
|
|
|
82 |
|
|
#ifdef PROTOTYPES
|
83 |
|
|
int
|
84 |
|
|
useitp (const int *val)
|
85 |
|
|
#else
|
86 |
|
|
int
|
87 |
|
|
useitp (val) const int *val;
|
88 |
|
|
#endif
|
89 |
|
|
{
|
90 |
|
|
static int usedval;
|
91 |
|
|
|
92 |
|
|
usedval = *val;
|
93 |
|
|
return *val + sum_upto (0);
|
94 |
|
|
}
|
95 |
|
|
|
96 |
|
|
#ifdef PROTOTYPES
|
97 |
|
|
int
|
98 |
|
|
autovars (int bcd, int abc)
|
99 |
|
|
#else
|
100 |
|
|
int
|
101 |
|
|
autovars (bcd, abc)
|
102 |
|
|
int bcd;
|
103 |
|
|
int abc;
|
104 |
|
|
#endif
|
105 |
|
|
{
|
106 |
|
|
int i0 = useit (0), i1 = useit (1), i2 = useit (2);
|
107 |
|
|
int i3 = useit (3), i4 = useit (4), i5 = useit (5);
|
108 |
|
|
int i6 = useit (6), i7 = useit (7), i8 = useit (8);
|
109 |
|
|
int i9 = useit (9), i10 = useit (10), i11 = useit (11);
|
110 |
|
|
int i12 = useit (12), i13 = useit (13), i14 = useit (14);
|
111 |
|
|
int i15 = useit (15), i16 = useit (16), i17 = useit (17);
|
112 |
|
|
int i18 = useit (18), i19 = useit (19), i20 = useit (20);
|
113 |
|
|
int i21 = useit (21), i22 = useit (22), i23 = useit (23);
|
114 |
|
|
int i24 = useit (24), i25 = useit (25), i26 = useit (26);
|
115 |
|
|
int i27 = useit (27), i28 = useit (28), i29 = useit (29);
|
116 |
|
|
int i30 = useit (30), i31 = useit (31), i32 = useit (32);
|
117 |
|
|
int i33 = useit (33), i34 = useit (34), i35 = useit (35);
|
118 |
|
|
int i36 = useit (36), i37 = useit (37), i38 = useit (38);
|
119 |
|
|
int i39 = useit (39), i40 = useit (40), i41 = useit (41);
|
120 |
|
|
int i42 = useit (42), i43 = useit (43), i44 = useit (44);
|
121 |
|
|
int i45 = useit (45), i46 = useit (46), i47 = useit (47);
|
122 |
|
|
int i48 = useit (48), i49 = useit (49), i50 = useit (50);
|
123 |
|
|
int i51 = useit (51), i52 = useit (52), i53 = useit (53);
|
124 |
|
|
int i54 = useit (54), i55 = useit (55), i56 = useit (56);
|
125 |
|
|
int i57 = useit (57), i58 = useit (58), i59 = useit (59);
|
126 |
|
|
int i60 = useit (60), i61 = useit (61), i62 = useit (62);
|
127 |
|
|
int i63 = useit (63), i64 = useit (64), i65 = useit (65);
|
128 |
|
|
int i66 = useit (66), i67 = useit (67), i68 = useit (68);
|
129 |
|
|
int i69 = useit (69), i70 = useit (70), i71 = useit (71);
|
130 |
|
|
int i72 = useit (72), i73 = useit (73), i74 = useit (74);
|
131 |
|
|
int i75 = useit (75), i76 = useit (76), i77 = useit (77);
|
132 |
|
|
int i78 = useit (78), i79 = useit (79), i80 = useit (80);
|
133 |
|
|
int i81 = useit (81), i82 = useit (82), i83 = useit (83);
|
134 |
|
|
int i84 = useit (84), i85 = useit (85), i86 = useit (86);
|
135 |
|
|
int i87 = useit (87), i88 = useit (88), i89 = useit (89);
|
136 |
|
|
int i90 = useit (90), i91 = useit (91), i92 = useit (92);
|
137 |
|
|
int i93 = useit (93), i94 = useit (94), i95 = useit (95);
|
138 |
|
|
int i96 = useit (96), i97 = useit (97), i98 = useit (98);
|
139 |
|
|
int i99 = useit (99);
|
140 |
|
|
|
141 |
|
|
/* Use all 100 of the local variables to derail agressive optimizers. */
|
142 |
|
|
|
143 |
|
|
useit ( i0); useit ( i1); useit ( i2); useit ( i3); useit ( i4);
|
144 |
|
|
useit ( i5); useit ( i6); useit ( i7); useit ( i8); useit ( i9);
|
145 |
|
|
useit (i10); useit (i11); useit (i12); useit (i13); useit (i14);
|
146 |
|
|
useit (i15); useit (i16); useit (i17); useit (i18); useit (i19);
|
147 |
|
|
useit (i20); useit (i21); useit (i22); useit (i23); useit (i24);
|
148 |
|
|
useit (i25); useit (i26); useit (i27); useit (i28); useit (i29);
|
149 |
|
|
useit (i30); useit (i31); useit (i32); useit (i33); useit (i34);
|
150 |
|
|
useit (i35); useit (i36); useit (i37); useit (i38); useit (i39);
|
151 |
|
|
useit (i40); useit (i41); useit (i42); useit (i43); useit (i44);
|
152 |
|
|
useit (i45); useit (i46); useit (i47); useit (i48); useit (i49);
|
153 |
|
|
useit (i50); useit (i51); useit (i52); useit (i53); useit (i54);
|
154 |
|
|
useit (i55); useit (i56); useit (i57); useit (i58); useit (i59);
|
155 |
|
|
useit (i60); useit (i61); useit (i62); useit (i63); useit (i64);
|
156 |
|
|
useit (i65); useit (i66); useit (i67); useit (i68); useit (i69);
|
157 |
|
|
useit (i70); useit (i71); useit (i72); useit (i73); useit (i74);
|
158 |
|
|
useit (i75); useit (i76); useit (i77); useit (i78); useit (i79);
|
159 |
|
|
useit (i80); useit (i81); useit (i82); useit (i83); useit (i84);
|
160 |
|
|
useit (i85); useit (i86); useit (i87); useit (i88); useit (i89);
|
161 |
|
|
useit (i90); useit (i91); useit (i92); useit (i93); useit (i94);
|
162 |
|
|
useit (i95); useit (i96); useit (i97); useit (i98); useit (i99);
|
163 |
|
|
|
164 |
|
|
useit (abc); useit (bcd);
|
165 |
|
|
|
166 |
|
|
marker1 ();
|
167 |
|
|
return i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10
|
168 |
|
|
+ i11 + i12 + i13 + i14 + i15 + i16 + i17 + i18 + i19 + i20
|
169 |
|
|
+ i21 + i22 + i23 + i24 + i25 + i26 + i27 + i28 + i29 + i30
|
170 |
|
|
+ i31 + i32 + i33 + i34 + i35 + i36 + i37 + i38 + i39 + i40
|
171 |
|
|
+ i41 + i42 + i43 + i44 + i45 + i46 + i47 + i48 + i49 + i50
|
172 |
|
|
+ i51 + i52 + i53 + i54 + i55 + i56 + i57 + i58 + i59 + i60
|
173 |
|
|
+ i61 + i62 + i63 + i64 + i65 + i66 + i67 + i68 + i69 + i70
|
174 |
|
|
+ i71 + i72 + i73 + i74 + i75 + i76 + i77 + i78 + i79 + i80
|
175 |
|
|
+ i81 + i82 + i83 + i84 + i85 + i86 + i87 + i88 + i89 + i90
|
176 |
|
|
+ i91 + i92 + i93 + i94 + i95 + i96 + i97 + i98 + i99 + abc + bcd;
|
177 |
|
|
}
|
178 |
|
|
|
179 |
|
|
#ifdef PROTOTYPES
|
180 |
|
|
int
|
181 |
|
|
localscopes (int x)
|
182 |
|
|
#else
|
183 |
|
|
int
|
184 |
|
|
localscopes (x)
|
185 |
|
|
int x;
|
186 |
|
|
#endif
|
187 |
|
|
{
|
188 |
|
|
int localval;
|
189 |
|
|
int retval;
|
190 |
|
|
int i;
|
191 |
|
|
|
192 |
|
|
localval = 0;
|
193 |
|
|
useit (localval);
|
194 |
|
|
|
195 |
|
|
{
|
196 |
|
|
int localval = x + 4 + sum_upto (3); /* 10 */
|
197 |
|
|
int localval1 = x + 5 + sum_upto (3); /* 11 */
|
198 |
|
|
|
199 |
|
|
useit (localval);
|
200 |
|
|
useit (localval1);
|
201 |
|
|
marker2 ();
|
202 |
|
|
{
|
203 |
|
|
int localval = localval1 + 3 + sum_upto (3); /* 20 */
|
204 |
|
|
int localval2 = localval1 + sum_upto (1); /* 12 */
|
205 |
|
|
useit (localval);
|
206 |
|
|
useit (localval2);
|
207 |
|
|
marker3 ();
|
208 |
|
|
{
|
209 |
|
|
int localval = localval2 + 3 + sum_upto (5); /* 30 */
|
210 |
|
|
int localval3 = localval2 + sum_upto (1); /* 13 */
|
211 |
|
|
useit (localval);
|
212 |
|
|
useit (localval3);
|
213 |
|
|
marker4 ();
|
214 |
|
|
retval = x + localval1 + localval2 + localval3;
|
215 |
|
|
}
|
216 |
|
|
}
|
217 |
|
|
}
|
218 |
|
|
return retval;
|
219 |
|
|
}
|
220 |
|
|
|
221 |
|
|
void marker1 () {}
|
222 |
|
|
void marker2 () {}
|
223 |
|
|
void marker3 () {}
|
224 |
|
|
void marker4 () {}
|