1 unsigned
sat_add(unsigned i)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
sat_add2(unsigned i)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
sat_add3(unsigned i)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
sat_add4(unsigned i)29 sat_add4 (unsigned i)
30 {
31   unsigned ret = i - 1;
32   if (ret < i)
33     return ret;
34   return i;
35 }
main()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 }
48