2004-03-24  Jakub Jelinek  <jakub@redhat.com>

	* stdlib/strtod_l.c (INTERNAL (__STRTOF)): Clear the rest of retval,
	not just one limb if RETURN_LIMB_SIZE > 2.  Fix shifting up if
	RETURN_LIMB_SIZE > 2.

	* stdio-common/printf_fp.c (__printf_fp): For IEEE quad long double
	on 32-bit architectures reserve 8 limbs instead of 4.
This commit is contained in:
Ulrich Drepper 2004-03-24 22:05:34 +00:00
parent 6abbc50157
commit 9ce0ecbe38
7 changed files with 34 additions and 15 deletions

View File

@ -1,3 +1,12 @@
2004-03-24 Jakub Jelinek <jakub@redhat.com>
* stdlib/strtod_l.c (INTERNAL (__STRTOF)): Clear the rest of retval,
not just one limb if RETURN_LIMB_SIZE > 2. Fix shifting up if
RETURN_LIMB_SIZE > 2.
* stdio-common/printf_fp.c (__printf_fp): For IEEE quad long double
on 32-bit architectures reserve 8 limbs instead of 4.
2004-03-23 Jakub Jelinek <jakub@redhat.com> 2004-03-23 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_pread, __NR_pwrite): * sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_pread, __NR_pwrite):

View File

@ -1,3 +1,7 @@
2004-03-11 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/tls.h: Remove __powerpc64__ conditional.
2004-03-23 Ulrich Drepper <drepper@redhat.com> 2004-03-23 Ulrich Drepper <drepper@redhat.com>
* sysdeps/ia64/pt-machine.h (BUSY_WAIT_NOP): Define. * sysdeps/ia64/pt-machine.h (BUSY_WAIT_NOP): Define.

View File

@ -130,14 +130,12 @@ typedef struct
# endif /* __ASSEMBLER__ */ # endif /* __ASSEMBLER__ */
#elif !defined __ASSEMBLER__ && !defined __powerpc64__ #elif !defined __ASSEMBLER__
/* This overlaps the start of the pthread_descr. On PPC32, system /* This overlaps the start of the pthread_descr. System calls
calls and such use this to find the multiple_threads flag and need and such use this to find the multiple_threads flag and need
to use the same offset relative to the thread register in both to use the same offset relative to the thread register in both
single-threaded and multi-threaded code. On PPC64, the global single-threaded and multi-threaded code. */
variable is always used, so single-threaded code without TLS
never needs to initialize the thread register at all. */
typedef struct typedef struct
{ {
void *tcb; /* Never used. */ void *tcb; /* Never used. */

View File

@ -45,15 +45,15 @@ but it's better to pretty print it first. "gen-libm-test.pl" has an option
to generate a pretty-printed and sorted new ULPs file from the output to generate a pretty-printed and sorted new ULPs file from the output
of the test drivers. of the test drivers.
To generate a new "libm-test-ulps" file, you can execute for example: To generate a new "libm-test-ulps" file, first remove "ULPs" file in the
current directory, then you can execute for example:
test-double -u --ignore-max-ulp=yes test-double -u --ignore-max-ulp=yes
This generates a file "ULPs" with all double ULPs in it, ignoring any This generates a file "ULPs" with all double ULPs in it, ignoring any
previous calculated ULPs. previous calculated ULPs.
Now move this away, e.g. "mv ULPs allULPs" and generate the ULPs Now generate the ULPs for all other formats, the tests will be appending
for all other formats and concat all ULP files together (e.g. "cat the data to the "ULPs" file. As final step run "gen-libm-test.pl" with the
ULPs >> allULPs"). As final step run "gen-libm-test.pl" with the file file as input and ask to generate a pretty printed output in the file "NewUlps":
as input and ask to generate a pretty printed output in the file "NewUlps": gen-libm-test.pl -u ULPs -n
gen-libm-test.pl -u allULPs -n
Now you can rename "NewUlps" to "libm-test-ulps" and move it into Now you can rename "NewUlps" to "libm-test-ulps" and move it into
sysdeps. sysdeps.

View File

@ -31,7 +31,7 @@ really_getpid (pid_t oldval)
if (__builtin_expect (oldval == 0, 1)) if (__builtin_expect (oldval == 0, 1))
{ {
pid_t selftid = THREAD_GETMEM (THREAD_SELF, tid); pid_t selftid = THREAD_GETMEM (THREAD_SELF, tid);
if (__builtin_expect (selftid != 0), 1) if (__builtin_expect (selftid != 0, 1))
return selftid; return selftid;
} }

View File

@ -430,7 +430,9 @@ __printf_fp (FILE *fp,
would be really big it could lead to memory problems. */ would be really big it could lead to memory problems. */
{ {
mp_size_t bignum_size = ((ABS (exponent) + BITS_PER_MP_LIMB - 1) mp_size_t bignum_size = ((ABS (exponent) + BITS_PER_MP_LIMB - 1)
/ BITS_PER_MP_LIMB + 4) * sizeof (mp_limb_t); / BITS_PER_MP_LIMB
+ (LDBL_MANT_DIG / BITS_PER_MP_LIMB > 2 ? 8 : 4))
* sizeof (mp_limb_t);
frac = (mp_limb_t *) alloca (bignum_size); frac = (mp_limb_t *) alloca (bignum_size);
tmp = (mp_limb_t *) alloca (bignum_size); tmp = (mp_limb_t *) alloca (bignum_size);
scale = (mp_limb_t *) alloca (bignum_size); scale = (mp_limb_t *) alloca (bignum_size);

View File

@ -1155,7 +1155,11 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc)
memcpy (retval, num, numsize * sizeof (mp_limb_t)); memcpy (retval, num, numsize * sizeof (mp_limb_t));
#if RETURN_LIMB_SIZE > 1 #if RETURN_LIMB_SIZE > 1
if (numsize < RETURN_LIMB_SIZE) if (numsize < RETURN_LIMB_SIZE)
# if RETURN_LIMB_SIZE == 2
retval[numsize] = 0; retval[numsize] = 0;
# else
MPN_ZERO (retval + numsize, RETURN_LIMB_SIZE - numsize);
# endif
#endif #endif
} }
@ -1461,8 +1465,10 @@ INTERNAL (__STRTOF) (nptr, endptr, group, loc)
__mpn_lshift_1 (retval, RETURN_LIMB_SIZE, __mpn_lshift_1 (retval, RETURN_LIMB_SIZE,
BITS_PER_MP_LIMB, 0); BITS_PER_MP_LIMB, 0);
#else #else
for (i = RETURN_LIMB_SIZE; i > empty; --i) for (i = RETURN_LIMB_SIZE - 1; i >= empty; --i)
retval[i] = retval[i - empty]; retval[i] = retval[i - empty];
while (i >= 0)
retval[i--] = 0;
#endif #endif
for (i = numsize; i > 0; --i) for (i = numsize; i > 0; --i)
num[i + empty] = num[i - 1]; num[i + empty] = num[i - 1];