This routine suffered a similar problem as stxncpy in needing to
bias a potentially very large unsigned number with wraparound.
This exposed a secondary problem where we didn't properly handle
end-of-count condition for the second string input resulting in
stratcliff failures.
The routines expect to be able to bias the count by a small number.
If the count is near -1ull, the count will overflow. Since we cannot
use the whole 64-bit address space, bound the count to LONG_MAX.
Partial revert of bebc49030c. Even with the revert, ceil and floor are
still faster than libcpml's equivalent.
Fixes bug 5350.
Signed-off-by: Matt Turner <mattst88@gmail.com>
GCC 4.5 was able to tell that BAR was read-only and zero, and
elided the load. Which caused the pattern match to fail.
Signed-off-by: Richard Henderson <rth@twiddle.net>
* sysdeps/alpha, sysdeps/unix/bsd/osf/alpha,
sysdeps/unix/bsd/Attic/osf1/alpha, sysdeps/unix/sysv/linux/alpha,
sysdeps/unix/sysv/linux/alpha/alpha, sysdeps/unix/alpha,
sysdeps/mach/alpha, sysdeps/mach/hurd/alpha:
Subdirectories moved here from main repository.
* sysdeps/alpha/nptl, sysdeps/unix/sysv/linux/alpha/nptl:
Subdirectories moved here from main repository's nptl/ subdirectory.
* sysdeps/alpha/preconfigure: New file.
* sysdeps/alpha/shlib-versions: New file.
* sysdeps/alpha/fpu/bits/mathinline.h (__isnanl): Don't define
if __NO_LONG_DOUBLE_MATH.
* sysdeps/unix/sysv/linux/alpha/ioperm.c: If BWX insns not
available in the compiler, add .arch directive to ethe assembly.
2007-05-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/alpha/fpu/s_nearbyint.c (nearbyintl): Fix version on
compat_symbol to GLIBC_2_1.
* sysdeps/alpha/fpu/s_fmin.S (fminl): Likewise.
* sysdeps/alpha/fpu/s_trunc.c (truncl): Likewise.
* sysdeps/alpha/fpu/s_fmax.S (fmaxl): Likewise.
* sysdeps/alpha/fpu/s_lrint.c (lrintl, llrintl): Likewise.
* sysdeps/alpha/fpu/s_lround.c (lroundl, llroundl): Likewise.
* sysdeps/alpha/fpu/s_round.c (roundl): Likewise.
* sysdeps/alpha/fpu/s_isnan.c (isnanl): Provide compat_symbol in
libc, not libm.
(__isnanl): New compat_symbol.
* sysdeps/alpha/fpu/s_llroundf.c: New file.
* sysdeps/alpha/fpu/s_lround.c: New file.
* sysdeps/alpha/fpu/s_lroundf.c: New file.
* sysdeps/alpha/fpu/s_round.c: New file.
* sysdeps/alpha/fpu/s_roundf.c: New file.
* sysdeps/alpha/fpu/s_trunc.c: New file.
* sysdeps/alpha/fpu/s_truncf.c: New file.