1static int filelocal = 1; /* In Data section */ 2static int filelocal_bss; /* In BSS section */ 3#ifndef __STDC__ 4#define const /**/ 5#endif 6static const int filelocal_ro = 201; /* In Read-Only Data section */ 7 8extern void init1(); 9extern void foo(); 10 11int autovars (int bcd, int abc); 12int localscopes (int x); 13int useit (int val); 14int useitp (const int *val); 15void init0(); 16void marker1 (); 17void marker2 (); 18void marker3 (); 19void marker4 (); 20 21int 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. */ 36void usestatics () 37{ 38 useitp (&filelocal); 39 useitp (&filelocal_bss); 40 useitp (&filelocal_ro); 41} 42 43void 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 52int 53sum_upto (int n) 54#else 55int 56sum_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 69int 70useit (int val) 71#else 72int 73useit (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 83int 84useitp (const int *val) 85#else 86int 87useitp (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 97int 98autovars (int bcd, int abc) 99#else 100int 101autovars (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 180int 181localscopes (int x) 182#else 183int 184localscopes (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 221void marker1 () {} 222void marker2 () {} 223void marker3 () {} 224void marker4 () {} 225