1999-05-05 Ulrich Drepper <drepper@cygnus.com>
+ * stdio-common/_itoa.c (_itoa): Fix special 32bit platform case
+ with specific bases and only few bits set in second word.
+
* timezone/Makefile (install-others): Create target directory
before creating tzfiles.
changed in exceptional cases.
If the optional @code{!} is placed before the @var{status} this means
-the following action is used for all statii but @var{status} itself.
+the following action is used for all statuses but @var{status} itself.
I.e., @code{!} is negation as in the C language (and others).
Before we explain the exception which makes this action item necessary
switch (base)
{
-#define RUN_2N(BITS) \
- do \
- { \
- /* `unsigned long long int' always has 64 bits. */ \
- mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB); \
- \
- if (BITS_PER_MP_LIMB == 32) \
- { \
- if (work_hi != 0) \
- { \
- mp_limb_t work_lo; \
- int cnt; \
- \
- work_lo = value & 0xfffffffful; \
- for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt) \
- { \
- *--bp = digits[work_lo & ((1ul << BITS) - 1)]; \
- work_lo >>= BITS; \
- } \
- if (BITS_PER_MP_LIMB % BITS != 0) \
- { \
- work_lo \
- |= ((work_hi \
- & ((1 << (BITS - BITS_PER_MP_LIMB%BITS)) \
- - 1)) \
- << BITS_PER_MP_LIMB % BITS); \
- *--bp = digits[work_lo]; \
- work_hi >>= BITS - BITS_PER_MP_LIMB % BITS; \
- } \
- } \
- else \
- work_hi = value & 0xfffffffful; \
- } \
- do \
- { \
- *--bp = digits[work_hi & ((1 << BITS) - 1)]; \
- work_hi >>= BITS; \
- } \
- while (work_hi != 0); \
- } \
+#define RUN_2N(BITS) \
+ do \
+ { \
+ /* `unsigned long long int' always has 64 bits. */ \
+ mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB); \
+ \
+ if (BITS_PER_MP_LIMB == 32) \
+ { \
+ if (work_hi != 0) \
+ { \
+ mp_limb_t work_lo; \
+ int cnt; \
+ \
+ work_lo = value & 0xfffffffful; \
+ for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt) \
+ { \
+ *--bp = digits[work_lo & ((1ul << BITS) - 1)]; \
+ work_lo >>= BITS; \
+ } \
+ if (BITS_PER_MP_LIMB % BITS != 0) \
+ { \
+ work_lo \
+ |= ((work_hi \
+ & ((1 << (BITS - BITS_PER_MP_LIMB%BITS)) \
+ - 1)) \
+ << BITS_PER_MP_LIMB % BITS); \
+ work_hi >>= BITS - BITS_PER_MP_LIMB % BITS; \
+ if (work_hi == 0) \
+ work_hi = work_lo; \
+ else \
+ *--bp = digits[work_lo]; \
+ } \
+ } \
+ else \
+ work_hi = value & 0xfffffffful; \
+ } \
+ do \
+ { \
+ *--bp = digits[work_hi & ((1 << BITS) - 1)]; \
+ work_hi >>= BITS; \
+ } \
+ while (work_hi != 0); \
+ } \
while (0)
case 8:
RUN_2N (3);