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