| static inline int foo (long x) | |
| { | |
| register int a = 0; | |
| register unsigned b; | |
| do | |
| { | |
| b = (x & 0x7f); | |
| x = (x >> 7) | ~(-1L >> 7); | |
| a += 1; | |
| } | |
| while ((x != 0 || (b & 0x40) != 0) && (x != -1 || (b & 0x40) == 0)); | |
| return a; | |
| } | |
| static inline int bar (unsigned long x) | |
| { | |
| register int a = 0; | |
| register unsigned b; | |
| do | |
| { | |
| b = (x & 0x7f); | |
| x >>= 7; | |
| a++; | |
| } | |
| while (x != 0); | |
| return a; | |
| } | |
| int | |
| baz (unsigned long x, int y) | |
| { | |
| if (y) | |
| return foo ((long) x); | |
| else | |
| return bar (x); | |
| } |