modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/divmod-1.c (about)

     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  }