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