]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Use __floor not floor in sinf.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 4 Dec 2017 16:58:08 +0000 (16:58 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 4 Dec 2017 16:58:08 +0000 (16:58 +0000)
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.

ChangeLog
sysdeps/ieee754/flt-32/s_sinf.c

index 6ac924be247d00d7a6b607e0058a519dc4d0e1f5..61c25076cffd46f52c58a9ddd481670f9d6c943a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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):
index f03dba4a8af2e9e000dfa868e90cd2edc29e4533..40d3d197a829c9996301daf5446de58983d65757 100644 (file)
@@ -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);