1 #include <stdio.h>
2 
3 #ifdef DEBUG
4 #define abort() printf ("error, line %d\n", __LINE__)
5 #endif
6 
7 int count;
8 
a1()9 void a1() { ++count; }
10 
11 void
b(unsigned short data)12 b (unsigned short data)
13 {
14   if (data & 0x8000) a1();
15   data <<= 1;
16 
17   if (data & 0x8000) a1();
18   data <<= 1;
19 
20   if (data & 0x8000) a1();
21 }
22 
main()23 main ()
24 {
25   count = 0;
26   b (0);
27   if (count != 0)
28     abort ();
29 
30   count = 0;
31   b (0x8000);
32   if (count != 1)
33     abort ();
34 
35   count = 0;
36   b (0x4000);
37   if (count != 1)
38     abort ();
39 
40   count = 0;
41   b (0x2000);
42   if (count != 1)
43     abort ();
44 
45   count = 0;
46   b (0xc000);
47   if (count != 2)
48     abort ();
49 
50   count = 0;
51   b (0xa000);
52   if (count != 2)
53     abort ();
54 
55   count = 0;
56   b (0x6000);
57   if (count != 2)
58     abort ();
59 
60   count = 0;
61   b (0xe000);
62   if (count != 3)
63     abort ();
64 
65 #ifdef DEBUG
66   printf ("Done.\n");
67 #endif
68   exit (0);
69 }
70