diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2017-09-28 19:52:13 +0100 |
---|---|---|
committer | Wilco Dijkstra <wdijkstr@arm.com> | 2017-09-28 19:52:13 +0100 |
commit | 4d3693ec1cb7d247a217dc1eb7121c658f818dca (patch) | |
tree | 4d95d8dc10f9582f39a881078edd8fbdb8938aef | |
parent | 1e6d07234fc0edcf0e88d75cf48f0b0dbbea3f39 (diff) | |
download | glibc-4d3693ec1cb7d247a217dc1eb7121c658f818dca.zip glibc-4d3693ec1cb7d247a217dc1eb7121c658f818dca.tar.gz glibc-4d3693ec1cb7d247a217dc1eb7121c658f818dca.tar.bz2 |
Remove ancient __signbit inlines
Remove __signbit inlines from mathinline.h. Math.h already uses
the builtin when supported, so additional inlines are only used
on pre 4.0 GCCs. Similarly remove ancient copysign and fabs
inlines.
* sysdeps/alpha/fpu/bits/mathinline.h: Delete file.
* sysdeps/ia64/fpu/bits/mathinline.h: Delete file.
* sysdeps/m68k/coldfire/fpu/bits/mathinline.h: Delete file.
* sysdeps/m68k/m680x0/fpu/bits/mathinline.h: (__signbitf): Remove.
(__signbit): Remove.
(__signbitl): Remove.
* sysdeps/powerpc/bits/mathinline.h (__signbitf): Remove.
(__signbit): Remove.
(__signbitl): Remove.
* sysdeps/s390/fpu/bits/mathinline.h: (__signbitf): Remove.
(__signbit): Remove.
(__signbitl): Remove
* sysdeps/sparc/fpu/bits/mathinline.h (__signbitf): Remove.
(__signbit): Remove.
(__signbitl): Remove.
* sysdeps/tile/bits/mathinline.h: Delete file.
* sysdeps/x86/fpu/bits/mathinline.h (__signbitf): Remove.
(__signbit): Remove.
(__signbitl): Remove.
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | sysdeps/alpha/fpu/bits/mathinline.h | 110 | ||||
-rw-r--r-- | sysdeps/ia64/fpu/bits/mathinline.h | 53 | ||||
-rw-r--r-- | sysdeps/m68k/coldfire/fpu/bits/mathinline.h | 44 | ||||
-rw-r--r-- | sysdeps/m68k/m680x0/fpu/bits/mathinline.h | 24 | ||||
-rw-r--r-- | sysdeps/powerpc/bits/mathinline.h | 35 | ||||
-rw-r--r-- | sysdeps/s390/fpu/bits/mathinline.h | 34 | ||||
-rw-r--r-- | sysdeps/sparc/fpu/bits/mathinline.h | 54 | ||||
-rw-r--r-- | sysdeps/tile/bits/mathinline.h | 44 | ||||
-rw-r--r-- | sysdeps/x86/fpu/bits/mathinline.h | 38 |
10 files changed, 22 insertions, 436 deletions
@@ -1,5 +1,27 @@ 2017-09-28 Wilco Dijkstra <wdijkstr@arm.com> + * sysdeps/alpha/fpu/bits/mathinline.h: Delete file. + * sysdeps/ia64/fpu/bits/mathinline.h: Delete file. + * sysdeps/m68k/coldfire/fpu/bits/mathinline.h: Delete file. + * sysdeps/m68k/m680x0/fpu/bits/mathinline.h: (__signbitf): Remove. + (__signbit): Remove. + (__signbitl): Remove. + * sysdeps/powerpc/bits/mathinline.h (__signbitf): Remove. + (__signbit): Remove. + (__signbitl): Remove. + * sysdeps/s390/fpu/bits/mathinline.h: (__signbitf): Remove. + (__signbit): Remove. + (__signbitl): Remove. + * sysdeps/sparc/fpu/bits/mathinline.h (__signbitf): Remove. + (__signbit): Remove. + (__signbitl): Remove. + * sysdeps/tile/bits/mathinline.h: Delete file. + * sysdeps/x86/fpu/bits/mathinline.h (__signbitf): Remove. + (__signbit): Remove. + (__signbitl): Remove. + +2017-09-28 Wilco Dijkstra <wdijkstr@arm.com> + * math/math.h: Improve handling of C99 isgreater macros. * sysdeps/alpha/fpu/bits/mathinline.h: Remove isgreater macros. * sysdeps/m68k/m680x0/fpu/bits/mathinline.h: Likewise. diff --git a/sysdeps/alpha/fpu/bits/mathinline.h b/sysdeps/alpha/fpu/bits/mathinline.h deleted file mode 100644 index dad99d3..0000000 --- a/sysdeps/alpha/fpu/bits/mathinline.h +++ /dev/null @@ -1,110 +0,0 @@ -/* Inline math functions for Alpha. - Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David Mosberger-Tang. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/mathinline.h> directly; include <math.h> instead." -#endif - -#ifndef __extern_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_inline -#endif - -#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \ - && defined __OPTIMIZE__ - -#if !__GNUC_PREREQ (4, 0) -# define __inline_copysign(NAME, TYPE) \ -__MATH_INLINE TYPE \ -__NTH (NAME (TYPE __x, TYPE __y)) \ -{ \ - TYPE __z; \ - __asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); \ - return __z; \ -} - -__inline_copysign (__copysignf, float) -__inline_copysign (copysignf, float) -__inline_copysign (__copysign, double) -__inline_copysign (copysign, double) - -# undef __inline_copysign -#endif - - -#if !__GNUC_PREREQ (2, 8) -# define __inline_fabs(NAME, TYPE) \ -__MATH_INLINE TYPE \ -__NTH (NAME (TYPE __x)) \ -{ \ - TYPE __z; \ - __asm ("cpys $f31, %1, %0" : "=f" (__z) : "f" (__x)); \ - return __z; \ -} - -__inline_fabs (__fabsf, float) -__inline_fabs (fabsf, float) -__inline_fabs (__fabs, double) -__inline_fabs (fabs, double) - -# undef __inline_fabs -#endif - -#ifdef __USE_ISOC99 - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ -#if !__GNUC_PREREQ (4, 0) - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -#else - return __builtin_signbitf (__x); -#endif -} - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ -#if !__GNUC_PREREQ (4, 0) - __extension__ union { double __d; long __i; } __u = { __d: __x }; - return __u.__i < 0; -#else - return __builtin_signbit (__x); -#endif -} - -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ -#if !__GNUC_PREREQ (4, 0) - __extension__ union { - long double __d; - long __i[sizeof(long double)/sizeof(long)]; - } __u = { __d: __x }; - return __u.__i[sizeof(long double)/sizeof(long) - 1] < 0; -#else - return __builtin_signbitl (__x); -#endif -} -#endif /* C99 */ - -#endif /* __NO_MATH_INLINES */ diff --git a/sysdeps/ia64/fpu/bits/mathinline.h b/sysdeps/ia64/fpu/bits/mathinline.h deleted file mode 100644 index c2107af..0000000 --- a/sysdeps/ia64/fpu/bits/mathinline.h +++ /dev/null @@ -1,53 +0,0 @@ -/* Inline math functions for ia64. - Copyright (C) 2004-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/mathinline.h> directly; include <math.h> instead." -#endif - -#ifndef __extern_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_inline -#endif - -#if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2 -/* The gcc, version 2.7 or below, has problems with all this inlining - code. So disable it for this version of the compiler. */ -# if __GNUC_PREREQ (2, 8) -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[1] < 0; -} -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[3]; } __u = { __l: __x }; - return (__u.__i[2] & 0x8000) != 0; -} -# endif -#endif diff --git a/sysdeps/m68k/coldfire/fpu/bits/mathinline.h b/sysdeps/m68k/coldfire/fpu/bits/mathinline.h deleted file mode 100644 index 7dbfe37..0000000 --- a/sysdeps/m68k/coldfire/fpu/bits/mathinline.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Inline math functions for Coldfire. - Copyright (C) 2012-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/mathinline.h> directly; include <math.h> instead." -#endif - -#ifndef __extern_always_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_always_inline -#endif - -#if defined __USE_ISOC99 && defined __GNUC__ - -/* Test for negative number. Used in the signbit macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - return __builtin_signbitf (__x); -} - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - return __builtin_signbit (__x); -} - -#endif diff --git a/sysdeps/m68k/m680x0/fpu/bits/mathinline.h b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h index 07ba145..dcc2a4e 100644 --- a/sysdeps/m68k/m680x0/fpu/bits/mathinline.h +++ b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h @@ -28,30 +28,6 @@ #ifdef __GNUC__ -#ifdef __USE_ISOC99 - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[0] < 0; -} -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __d; int __i[3]; } __u = { __d: __x }; - return __u.__i[0] < 0; -} -#endif - - #if (!defined __NO_MATH_INLINES && defined __OPTIMIZE__) \ || defined __LIBC_INTERNAL_MATH_INLINES diff --git a/sysdeps/powerpc/bits/mathinline.h b/sysdeps/powerpc/bits/mathinline.h index 406465f..a5f63e4 100644 --- a/sysdeps/powerpc/bits/mathinline.h +++ b/sysdeps/powerpc/bits/mathinline.h @@ -28,41 +28,6 @@ #if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__ -#ifdef __USE_ISOC99 -/* The gcc, version 2.7 or below, has problems with all this inlining - code. So disable it for this version of the compiler. */ -# if __GNUC_PREREQ (2, 8) -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ -#if __GNUC_PREREQ (4, 0) - return __builtin_signbitf (__x); -#else - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -#endif -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ -#if __GNUC_PREREQ (4, 0) - return __builtin_signbit (__x); -#else - __extension__ union { double __d; long long __i; } __u = { __d: __x }; - return __u.__i < 0; -#endif -} -# ifdef __LONG_DOUBLE_128__ -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - return __signbit ((double) __x); -} -# endif -# endif -#endif /* __USE_ISOC99 */ - #if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ #ifdef __USE_ISOC99 diff --git a/sysdeps/s390/fpu/bits/mathinline.h b/sysdeps/s390/fpu/bits/mathinline.h index 52e21db..287ac1b 100644 --- a/sysdeps/s390/fpu/bits/mathinline.h +++ b/sysdeps/s390/fpu/bits/mathinline.h @@ -29,40 +29,6 @@ #if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \ && defined __OPTIMIZE__ -#ifdef __USE_ISOC99 - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; long __i; } __u = { __d: __x }; - return __u.__i < 0; -} - -# ifndef __NO_LONG_DOUBLE_MATH -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[4]; } __u = { __l: __x }; - return __u.__i[0] < 0; -} -# else -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - return __signbit ((double) __x); -} -# endif - -#endif /* C99 */ - /* This code is used internally in the GNU libc. */ #ifdef __LIBC_INTERNAL_MATH_INLINES diff --git a/sysdeps/sparc/fpu/bits/mathinline.h b/sysdeps/sparc/fpu/bits/mathinline.h index 6d68136..0c5da62 100644 --- a/sysdeps/sparc/fpu/bits/mathinline.h +++ b/sysdeps/sparc/fpu/bits/mathinline.h @@ -37,60 +37,6 @@ code. So disable it for this version of the compiler. */ # if __GNUC_PREREQ (2, 8) -# ifdef __USE_ISOC99 - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} - -# if __WORDSIZE == 32 - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[0] < 0; -} - -# ifndef __NO_LONG_DOUBLE_MATH -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[4]; } __u = { __l: __x }; - return __u.__i[0] < 0; -} -# else -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - return __signbit ((double)__x); -} -# endif - -# else /* sparc64 */ - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; long int __i; } __u = { __d: __x }; - return __u.__i < 0; -} - -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; long int __i[2]; } __u = { __l: __x }; - return __u.__i[0] < 0; -} - -# endif /* sparc64 */ - -# endif /* __USE_ISOC99 */ - # if !defined __NO_MATH_INLINES && !__GNUC_PREREQ (3, 2) __MATH_INLINE double diff --git a/sysdeps/tile/bits/mathinline.h b/sysdeps/tile/bits/mathinline.h deleted file mode 100644 index 5692d91..0000000 --- a/sysdeps/tile/bits/mathinline.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/mathinline.h> directly; include <math.h> instead." -#endif - -#ifndef __extern_always_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_always_inline -#endif - - -#if defined __USE_ISOC99 && defined __GNUC__ - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - return __builtin_signbitf (__x); -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - return __builtin_signbit (__x); -} - -#endif diff --git a/sysdeps/x86/fpu/bits/mathinline.h b/sysdeps/x86/fpu/bits/mathinline.h index ac31dee..bae6969 100644 --- a/sysdeps/x86/fpu/bits/mathinline.h +++ b/sysdeps/x86/fpu/bits/mathinline.h @@ -28,44 +28,6 @@ /* The gcc, version 2.7 or below, has problems with all this inlining code. So disable it for this version of the compiler. */ -# if __GNUC_PREREQ (2, 8) - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ -# ifdef __SSE2_MATH__ - int __m; - __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x)); - return (__m & 0x8) != 0; -# else - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -# endif -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ -# ifdef __SSE2_MATH__ - int __m; - __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x)); - return (__m & 0x80) != 0; -# else - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[1] < 0; -# endif -} -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[3]; } __u = { __l: __x }; - return (__u.__i[2] & 0x8000) != 0; -} - -# endif - -/* The gcc, version 2.7 or below, has problems with all this inlining - code. So disable it for this version of the compiler. */ #if __GNUC_PREREQ (2, 8) # if !__GNUC_PREREQ (3, 4) && !defined __NO_MATH_INLINES \ && defined __OPTIMIZE__ |