(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
complete-port.c
       1  /* This small program uses all the arithmetic operators that may
       2     generate calls to library routines which must be implemented in
       3     port-specific assembly language.  */
       4  /* { dg-do link } */
       5  
       6  #include <stddef.h>
       7  
       8  int foo ();
       9  double dfoo ();
      10  void discard (int);
      11  void ddiscard (double);
      12  
      13  int
      14  main (void)
      15  {
      16    int a = foo (), b = foo ();
      17    unsigned int au = foo (), bu = foo ();
      18    float af = dfoo (), bf = dfoo ();
      19    double ad = dfoo (), bd = dfoo ();
      20  
      21    discard (a * b);
      22    discard (a / b);
      23    discard (a % b);
      24  
      25    discard (au / bu);
      26    discard (au % bu);
      27  
      28    discard (a >> b);
      29    discard (a << b);
      30  
      31    discard (au >> bu);
      32    discard (au << bu);
      33  
      34    ddiscard (ad + bd);
      35    ddiscard (ad - bd);
      36    ddiscard (ad * bd);
      37    ddiscard (ad / bd);
      38    ddiscard (-ad);
      39  
      40    ddiscard (af + bf);
      41    ddiscard (af - bf);
      42    ddiscard (af * bf);
      43    ddiscard (af / bf);
      44    ddiscard (-af);
      45  
      46    discard ((int) ad);
      47    discard ((int) af);
      48  
      49    ddiscard ((double) a);
      50    ddiscard ((float) a);
      51    ddiscard ((float) ad);
      52  
      53    discard (ad == bd);
      54    discard (ad < bd);
      55    discard (ad > bd);
      56    discard (ad != bd);
      57    discard (ad <= bd);
      58    discard (ad >= bd);
      59  
      60    discard (af == bf);
      61    discard (af < bf);
      62    discard (af > bf);
      63    discard (af != bf);
      64    discard (af <= bf);
      65    discard (af >= bf);
      66  
      67    return 0;
      68  }
      69  
      70  void
      71  discard (x)
      72       int x __attribute__((__unused__));
      73  {}
      74  
      75  void
      76  ddiscard (x)
      77       double x __attribute__((__unused__));
      78  {}
      79  
      80  int
      81  foo ()
      82  {
      83    static int table[] = {20, 69, 4, 12};
      84    static int idx;
      85  
      86    return table[idx++];
      87  }
      88  
      89  double
      90  dfoo ()
      91  {
      92    static double table[] = {20.4, 69.96, 4.4, 202.202};
      93    static int idx;
      94  
      95    return table[idx++];
      96  }