This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: -ffast-math and mathinlines.h


>>>>> Andreas Jaeger writes:

>>>>> Andreas Jaeger writes:
AJ> Here's a patch for mathinline and the documentation.

AJ> Jakub, could you check whether sysdeps/sparc/fpu/bits/mathinline also
AJ> needs some #ifdef __FAST_MATH__ ?

Andreas> The testsuite doesn't pass the math inline tests anymore with this
Andreas> patch.  I don't know what's going on and will check it later.

I've commited this patch for now.  There're more updates needed but
gcc miscompiles glibc with them.  I'll try to investigate and get gcc
fixed before I submit the rest.  An update for the manual is also
coming later.

Andreas


2000-05-06  Andreas Jaeger  <aj@suse.de>

	* sysdeps/i386/fpu/bits/mathinline.h: Disable some inline
	functions unless -ffast-math is given to gcc.

============================================================
Index: sysdeps/i386/fpu/bits/mathinline.h
--- sysdeps/i386/fpu/bits/mathinline.h	2000/03/29 03:45:53	1.38
+++ sysdeps/i386/fpu/bits/mathinline.h	2000/05/06 07:41:12
@@ -604,7 +604,9 @@
 #endif
 
 #ifdef __USE_ISOC99
+#ifdef __FAST_MATH__
 __inline_mathop_declNP (log2, "fld1; fxch; fyl2x", "0" (__x) : "st(1)")
+#endif /* __FAST_MATH__ */
 
 __MATH_INLINE float
 ldexpf (float __x, int __y)
@@ -618,9 +620,11 @@
   __ldexp_code;
 }
 
+#ifdef __FAST_MATH__
 __inline_mathcodeNP3 (fma, __x, __y, __z, return (__x * __y) + __z)
 
 __inline_mathopNP (rint, "frndint")
+#endif /* __FAST_MATH__ */
 
 #define __lrint_code \
   long int __lrintres;							      \
@@ -695,7 +699,7 @@
 }
 
 /* Miscellaneous functions */
-
+#ifdef __FAST_MATH__
 __inline_mathcode (__coshm1, __x, \
   register long double __exm1 = __expm1l (__fabsl (__x));		      \
   return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1)
@@ -703,6 +707,7 @@
 __inline_mathcode (__acosh1p, __x, \
   return log1pl (__x + __sqrtl (__x) * __sqrtl (__x + 2.0)))
 
+#endif /* __FAST_MATH__ */
 #endif /* __USE_MISC  */
 
 /* Undefine some of the large macros which are not used anymore.  */

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]