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