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

     1  unsigned
     2  sat_add (unsigned i)
     3  {
     4    unsigned ret = i + 1;
     5    if (ret < i)
     6      ret = i;
     7    return ret;
     8  }
     9  
    10  unsigned
    11  sat_add2 (unsigned i)
    12  {
    13    unsigned ret = i + 1;
    14    if (ret > i)
    15      return ret;
    16    return i;
    17  }
    18  
    19  unsigned
    20  sat_add3 (unsigned i)
    21  {
    22    unsigned ret = i - 1;
    23    if (ret > i)
    24      ret = i;
    25    return ret;
    26  }
    27  
    28  unsigned
    29  sat_add4 (unsigned i)
    30  {
    31    unsigned ret = i - 1;
    32    if (ret < i)
    33      return ret;
    34    return i;
    35  }
    36  main ()
    37  {
    38    if (sat_add (~0U) != ~0U)
    39      abort ();
    40    if (sat_add2 (~0U) != ~0U)
    41      abort ();
    42    if (sat_add3 (0U) != 0U)
    43      abort ();
    44    if (sat_add4 (0U) != 0U)
    45      abort ();
    46    exit (0);
    47  }