diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-12-04 16:58:08 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-12-04 16:58:08 +0000 |
commit | 73895b499b1e290b6f19a5acf37944f663ec6d4e (patch) | |
tree | 10384c528e092779fd532798cf44912afa8bd874 | |
parent | 4c1d801a5956f049126ef6cbe22ed23693e77a8c (diff) | |
download | glibc-73895b499b1e290b6f19a5acf37944f663ec6d4e.tar glibc-73895b499b1e290b6f19a5acf37944f663ec6d4e.tar.gz glibc-73895b499b1e290b6f19a5acf37944f663ec6d4e.tar.bz2 glibc-73895b499b1e290b6f19a5acf37944f663ec6d4e.zip |
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.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/s_sinf.c | 4 |
2 files changed, 7 insertions, 2 deletions
@@ -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): diff --git a/sysdeps/ieee754/flt-32/s_sinf.c b/sysdeps/ieee754/flt-32/s_sinf.c index f03dba4a8a..40d3d197a8 100644 --- a/sysdeps/ieee754/flt-32/s_sinf.c +++ b/sysdeps/ieee754/flt-32/s_sinf.c @@ -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); |