Annotation of gcc/libgcc1-test.c, revision 1.1.1.1

1.1       root        1: /* This small function uses all the arithmetic operators that
                      2:    libgcc1.c can handle.  If you can link it, then
                      3:    you have provided replacements for all the libgcc1.c functions that
                      4:    your target machine needs.  */
                      5: 
                      6: int foo ();
                      7: double dfoo ();
                      8: 
                      9: /* We don't want __main here because that can drag in atexit (among other
                     10:    things) which won't necessarily exist yet.  */
                     11: 
                     12: main_without__main ()
                     13: {
                     14:   int a = foo (), b = foo ();
                     15:   unsigned int au = foo (), bu = foo ();
                     16:   float af = dfoo (), bf = dfoo ();
                     17:   double ad = dfoo (), bd = dfoo ();
                     18: 
                     19:   discard (a * b);
                     20:   discard (a / b);
                     21:   discard (a % b);
                     22: 
                     23:   discard (au / bu);
                     24:   discard (au % bu);
                     25: 
                     26:   discard (a >> b);
                     27:   discard (a << b);
                     28: 
                     29:   discard (au >> bu);
                     30:   discard (au << bu);
                     31: 
                     32:   ddiscard (ad + bd);
                     33:   ddiscard (ad - bd);
                     34:   ddiscard (ad * bd);
                     35:   ddiscard (ad / bd);
                     36:   ddiscard (-ad);
                     37: 
                     38:   ddiscard (af + bf);
                     39:   ddiscard (af - bf);
                     40:   ddiscard (af * bf);
                     41:   ddiscard (af / bf);
                     42:   ddiscard (-af);
                     43: 
                     44:   discard ((int) ad);
                     45:   discard ((int) af);
                     46: 
                     47:   ddiscard ((double) a);
                     48:   ddiscard ((float) a);
                     49:   ddiscard ((float) ad);
                     50: 
                     51:   discard (ad == bd);
                     52:   discard (ad < bd);
                     53:   discard (ad > bd);
                     54:   discard (ad != bd);
                     55:   discard (ad <= bd);
                     56:   discard (ad >= bd);
                     57: 
                     58:   discard (af == bf);
                     59:   discard (af < bf);
                     60:   discard (af > bf);
                     61:   discard (af != bf);
                     62:   discard (af <= bf);
                     63:   discard (af >= bf);
                     64: 
                     65:   return 0;
                     66: }
                     67: 
                     68: discard (x)
                     69:      int x;
                     70: {}
                     71: 
                     72: ddiscard (x)
                     73:      double x;
                     74: {}
                     75: 
                     76: foo ()
                     77: {
                     78:   static int table[] = {20, 69, 4, 12};
                     79:   static int idx;
                     80: 
                     81:   return table[idx++];
                     82: }
                     83: 
                     84: double
                     85: dfoo ()
                     86: {
                     87:   static double table[] = {20.4, 69.96, 4.4, 202.202};
                     88:   static int idx;
                     89: 
                     90:   return table[idx++];
                     91: }
                     92: 
                     93: /* Provide functions that some versions of the linker use to default
                     94:    the start address if -e symbol is not used, to avoid the warning
                     95:    message saying the start address is defaulted.  */
                     96: extern void start() __asm__("start");
                     97: extern void _start() __asm__("_start");
                     98: 
                     99: void start() {}
                    100: void _start() {}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.