div1(signed char x)1 div1 (signed char x)
2 {
3 return x / -1;
4 }
5
div2(signed short x)6 div2 (signed short x)
7 {
8 return x / -1;
9 }
10
div3(signed char x,signed char y)11 div3 (signed char x, signed char y)
12 {
13 return x / y;
14 }
15
div4(signed short x,signed short y)16 div4 (signed short x, signed short y)
17 {
18 return x / y;
19 }
20
mod1(signed char x)21 mod1 (signed char x)
22 {
23 return x % -1;
24 }
25
mod2(signed short x)26 mod2 (signed short x)
27 {
28 return x % -1;
29 }
30
mod3(signed char x,signed char y)31 mod3 (signed char x, signed char y)
32 {
33 return x % y;
34 }
35
mod4(signed short x,signed short y)36 mod4 (signed short x, signed short y)
37 {
38 return x % y;
39 }
40
41 signed long
mod5(signed long x,signed long y)42 mod5 (signed long x, signed long y)
43 {
44 return x % y;
45 }
46
47 unsigned long
mod6(unsigned long x,unsigned long y)48 mod6 (unsigned long x, unsigned long y)
49 {
50 return x % y;
51 }
52
main()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 }
78