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