(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
divmod-1.c
       1  div1 (signed char x)
       2  {
       3    return x / -1;
       4  }
       5  
       6  div2 (signed short x)
       7  {
       8    return x / -1;
       9  }
      10  
      11  div3 (signed char x, signed char y)
      12  {
      13    return x / y;
      14  }
      15  
      16  div4 (signed short x, signed short y)
      17  {
      18    return x / y;
      19  }
      20  
      21  mod1 (signed char x)
      22  {
      23    return x % -1;
      24  }
      25  
      26  mod2 (signed short x)
      27  {
      28    return x % -1;
      29  }
      30  
      31  mod3 (signed char x, signed char y)
      32  {
      33    return x % y;
      34  }
      35  
      36  mod4 (signed short x, signed short y)
      37  {
      38    return x % y;
      39  }
      40  
      41  signed long
      42  mod5 (signed long x, signed long y)
      43  {
      44    return x % y;
      45  }
      46       
      47  unsigned long
      48  mod6 (unsigned long x, unsigned long y)
      49  {
      50    return x % y;
      51  }
      52       
      53  main ()
      54  {
      55    if (div1 (-(1 << 7)) != 1 << 7)
      56      abort ();
      57    if (div2 (-(1 << 15)) != 1 << 15)
      58      abort ();
      59    if (div3 (-(1 << 7), -1) != 1 << 7)
      60      abort ();
      61    if (div4 (-(1 << 15), -1) != 1 << 15)
      62      abort ();
      63    if (mod1 (-(1 << 7)) != 0)
      64      abort ();
      65    if (mod2 (-(1 << 15)) != 0)
      66      abort ();
      67    if (mod3 (-(1 << 7), -1) != 0)
      68      abort ();
      69    if (mod4 (-(1 << 15), -1) != 0)
      70      abort ();
      71    if (mod5 (0x50000000, 2) != 0)
      72      abort ();
      73    if (mod6 (0x50000000, 2) != 0)
      74      abort ();
      75    
      76    exit (0);
      77  }