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