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