f1(unsigned int x,unsigned int y)1 f1 (unsigned int x, unsigned int y)
2 {
3   if (x == 0)
4     dummy ();
5   x -= y;
6   /* 0xfffffff2 < 0x80000000? */
7   if (x < ~(~(unsigned int) 0 >> 1))
8     abort ();
9   return x;
10 }
11 
f2(unsigned long int x,unsigned long int y)12 f2 (unsigned long int x, unsigned long int y)
13 {
14   if (x == 0)
15     dummy ();
16   x -= y;
17   /* 0xfffffff2 < 0x80000000? */
18   if (x < ~(~(unsigned long int) 0 >> 1))
19     abort ();
20   return x;
21 }
22 
23 
dummy()24 dummy () {}
25 
main()26 main ()
27 {
28   /*      0x7ffffff3			0x80000001 */
29   f1 ((~(unsigned int) 0 >> 1) - 12, ~(~(unsigned int) 0 >> 1) + 1);
30   f2 ((~(unsigned long int) 0 >> 1) - 12, ~(~(unsigned long int) 0 >> 1) + 1);
31   exit (0);
32 }
33