aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386/fpu/bits/mathinline.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/fpu/bits/mathinline.h')
-rw-r--r--sysdeps/i386/fpu/bits/mathinline.h18
1 files changed, 8 insertions, 10 deletions
diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h
index 5823055c30..10e2b4ee33 100644
--- a/sysdeps/i386/fpu/bits/mathinline.h
+++ b/sysdeps/i386/fpu/bits/mathinline.h
@@ -110,8 +110,6 @@
__result; })
# endif /* __i686__ */
-/* XXX Argh!!! More compiler errors. */
-#if 0
/* Test for negative number. Used in the signbit() macro. */
__MATH_INLINE int
__signbitf (float __x)
@@ -130,7 +128,6 @@ __signbitl (long double __x)
return (__u.__i[2] & 0x8000) != 0;
}
#endif
-#endif
/* The gcc, version 2.7 or below, has problems with all this inlining
@@ -534,8 +531,7 @@ __inline_mathcode (acosh, __x, \
__inline_mathcode (atanh, __x, \
register long double __y = __fabsl (__x); \
- return (-0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * \
- __sgn1l (__x)))
+ return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x))
/* The argument range of the inline version of hypotl is slightly reduced. */
@@ -581,7 +577,7 @@ __inline_mathcode2 (drem, __x, __y, \
/* This function is used in the `isfinite' macro. */
-__MATH_INLINE int __finite (double __x);
+__MATH_INLINE int __finite (double __x) __attribute__ ((__const__));
__MATH_INLINE int
__finite (double __x)
{
@@ -615,12 +611,14 @@ __inline_mathcode (__acosh1p, __x, \
/* This code is used internally in the GNU libc. */
-#if 0
-/* XXX I hate compiler bugs. The current version produces wrong code
- if this optimization is used. */
#ifdef __LIBC_INTERNAL_MATH_INLINES
__inline_mathop (__ieee754_sqrt, "fsqrt")
-#endif
+__inline_mathcode2 (__ieee754_atan2, __y, __x,
+ register long double __value;
+ __asm __volatile__ ("fpatan\n\t"
+ : "=t" (__value)
+ : "0" (__x), "u" (__y) : "st(1)");
+ return __value;)
#endif
#endif /* __GNUC__ */