summaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/bits
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-03-20 18:35:50 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-03-20 18:35:50 +0000
commitd0c5d731af73fcd787fb398a34e2431bcb686bd3 (patch)
tree3e19a0f226e3ec5b37724265de75921bab3a96e9 /sysdeps/powerpc/bits
parent8a07b0c43c46a480da070efd53a2720195e2256f (diff)
Remove powerpc, sparc fdim inlines (bug 22987).
The powerpc and sparc bits/mathinline.h include inlines of fdim and fdimf. These are not restricted to -fno-math-errno, but do not set errno, and wrongly use ordered <= comparisons instead of the required islessequal comparisons (this latter issue is latent on powerpc because GCC wrongly uses unordered comparison instructions for operations that should use ordered comparison instructions). Since we wish to avoid such header inlines anyway, leaving it to the compiler to inline such standard functions under appropriate conditions, this patch fixes those issues by removing the inlines in question (and thus removing the sparc bits/mathinline.h header which had no other inlines left in it). I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85003> for adding correct fdim inlines to GCC, since the function is simple enough that a correct inline is a perfectly reasonable architecture-independent optimization with -fno-math-errno and in the absence of implicit excess precision. Tested with build-many-glibcs.py for all its powerpc and sparc configurations. [BZ #22987] * sysdeps/powerpc/bits/mathinline.h (fdim): Remove inline function. (fdimf): Likewise. * sysdeps/sparc/fpu/bits/mathinline.h: Remove file.
Diffstat (limited to 'sysdeps/powerpc/bits')
-rw-r--r--sysdeps/powerpc/bits/mathinline.h14
1 files changed, 0 insertions, 14 deletions
diff --git a/sysdeps/powerpc/bits/mathinline.h b/sysdeps/powerpc/bits/mathinline.h
index 75cf7175e4..e3e83865df 100644
--- a/sysdeps/powerpc/bits/mathinline.h
+++ b/sysdeps/powerpc/bits/mathinline.h
@@ -53,20 +53,6 @@ __NTH (lrintf (float __x))
}
# endif
-__MATH_INLINE double fdim (double __x, double __y) __THROW;
-__MATH_INLINE double
-__NTH (fdim (double __x, double __y))
-{
- return __x <= __y ? 0 : __x - __y;
-}
-
-__MATH_INLINE float fdimf (float __x, float __y) __THROW;
-__MATH_INLINE float
-__NTH (fdimf (float __x, float __y))
-{
- return __x <= __y ? 0 : __x - __y;
-}
-
#endif /* __USE_ISOC99 */
#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
#endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */