Commit | Line | Data |
---|---|---|
c906108c SS |
1 | 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 | ||
085dd6e6 JM |
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); | |
0219b378 | 14 | int useitp (const int *val); |
085dd6e6 JM |
15 | void init0(); |
16 | void marker1 (); | |
17 | void marker2 (); | |
18 | void marker3 (); | |
19 | void marker4 (); | |
20 | ||
21 | int main () | |
c906108c SS |
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 | |
0219b378 DJ |
34 | from the executable. On other compilers, such as ARM RealView, |
35 | const variables without their address taken are deleted. */ | |
085dd6e6 | 36 | void usestatics () |
c906108c | 37 | { |
0219b378 DJ |
38 | useitp (&filelocal); |
39 | useitp (&filelocal_bss); | |
40 | useitp (&filelocal_ro); | |
c906108c SS |
41 | } |
42 | ||
085dd6e6 | 43 | void init0 () |
c906108c SS |
44 | { |
45 | filelocal_bss = 101; | |
46 | init1 (); | |
47 | } | |
48 | ||
49 | /* This is to derail optimizer in localscopes. | |
50 | Return 1 + 2 + . . . + N. */ | |
085dd6e6 JM |
51 | #ifdef PROTOTYPES |
52 | int | |
53 | sum_upto (int n) | |
54 | #else | |
c906108c SS |
55 | int |
56 | sum_upto (n) | |
57 | int n; | |
085dd6e6 | 58 | #endif |
c906108c SS |
59 | { |
60 | int i; | |
61 | int retval = 0; | |
62 | ||
63 | for (i = 1; i <= n; ++i) | |
64 | retval += i; | |
65 | return retval; | |
66 | } | |
67 | ||
085dd6e6 JM |
68 | #ifdef PROTOTYPES |
69 | int | |
70 | useit (int val) | |
71 | #else | |
c906108c | 72 | int |
0219b378 | 73 | useit (val) int val; |
085dd6e6 | 74 | #endif |
c906108c SS |
75 | { |
76 | static int usedval; | |
77 | ||
78 | usedval = val; | |
79 | return val + sum_upto (0); | |
80 | } | |
81 | ||
0219b378 DJ |
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 | ||
085dd6e6 JM |
96 | #ifdef PROTOTYPES |
97 | int | |
98 | autovars (int bcd, int abc) | |
99 | #else | |
c906108c SS |
100 | int |
101 | autovars (bcd, abc) | |
102 | int bcd; | |
103 | int abc; | |
085dd6e6 | 104 | #endif |
c906108c SS |
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 | ||
085dd6e6 JM |
179 | #ifdef PROTOTYPES |
180 | int | |
181 | localscopes (int x) | |
182 | #else | |
c906108c SS |
183 | int |
184 | localscopes (x) | |
185 | int x; | |
085dd6e6 | 186 | #endif |
c906108c SS |
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 | ||
085dd6e6 JM |
221 | void marker1 () {} |
222 | void marker2 () {} | |
223 | void marker3 () {} | |
224 | void marker4 () {} |