mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-25 13:51:04 +08:00
Use __floor not floor in sinf.
The new sinf implementation introduced localplt failures for all platforms where the compiler did not inline the calls to floor (converted to trunc by machine-independent optimizations). This patch changes the calls to use __floor as normal in libm. We can't use the public function names floor / floorf / floorl / floorf128 in libm code in the absence of appropriate asms to redirect floor/trunc calls, if not inlined, to use the internal names instead (while avoiding breaking code building the floor functions themselves) - while having such asms and then calling the public functions unconditionally would be desirable for optimization (few architectures have __floor inlines in math_private.h, and once the built-in function is used you don't need them), using __floor is the minimum safe fix for the present test regressions. Tested with build-many-glibcs.py that this fixes the localplt test failure for arm-linux-gnueabi. * sysdeps/ieee754/flt-32/s_sinf.c (SINF_FUNC): Use __floor instead of floor.
This commit is contained in:
parent
4c1d801a59
commit
73895b499b
@ -1,3 +1,8 @@
|
||||
2017-12-04 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/ieee754/flt-32/s_sinf.c (SINF_FUNC): Use __floor instead
|
||||
of floor.
|
||||
|
||||
2017-12-04 Siddhesh Poyarekar <siddhesh@sourceware.org>
|
||||
|
||||
* sysdeps/aarch64/multiarch/memcpy_generic.S (__GI_memcpy):
|
||||
|
@ -177,8 +177,8 @@ SINF_FUNC (float x)
|
||||
{
|
||||
if (abstheta < 0x1p+23) /* |x| < 2^23. */
|
||||
{
|
||||
unsigned long int n = floor (abstheta * inv_PI_4) + 1.0;
|
||||
double x = floor (n / 2.0);
|
||||
unsigned long int n = __floor (abstheta * inv_PI_4) + 1.0;
|
||||
double x = __floor (n / 2.0);
|
||||
theta = x * PI_2_lo + (x * PI_2_hi + abstheta);
|
||||
/* Argument reduction needed. */
|
||||
return reduced (theta, n, signbit);
|
||||
|
Loading…
x
Reference in New Issue
Block a user