foo(long x)1 static inline int foo (long x)
2 {
3 register int a = 0;
4 register unsigned b;
5
6 do
7 {
8 b = (x & 0x7f);
9 x = (x >> 7) | ~(-1L >> 7);
10 a += 1;
11 }
12 while ((x != 0 || (b & 0x40) != 0) && (x != -1 || (b & 0x40) == 0));
13 return a;
14 }
15
bar(unsigned long x)16 static inline int bar (unsigned long x)
17 {
18 register int a = 0;
19 register unsigned b;
20
21 do
22 {
23 b = (x & 0x7f);
24 x >>= 7;
25 a++;
26 }
27 while (x != 0);
28 return a;
29 }
30
31 int
baz(unsigned long x,int y)32 baz (unsigned long x, int y)
33 {
34 if (y)
35 return foo ((long) x);
36 else
37 return bar (x);
38 }
39