[PATCH] Fix test-tgmath failure on alpha
Jakub Jelinek
jakub@redhat.com
Wed Feb 7 05:37:00 GMT 2001
Hi!
test-tgmath fails on alpha because fdim, fabs and floor get inlined
eventhough __NO_MATH_INLINES is defined.
While looking at it, I patched tgmath.h so that it does not use ##l suffixed
functions if __NO_LONG_DOUBLE_MATH, since otherwise we get loads of warnings
about using functions without prototypes.
2001-02-07 Jakub Jelinek <jakub@redhat.com>
* math/tgmath.h: Only add l suffixes if __NO_LONG_DOUBLE_MATH is
not defined.
* sysdeps/alpha/fpu/bits/mathinline.h: Honour __NO_MATH_INLINES.
--- libc/math/tgmath.h.jj Fri Feb 2 04:56:56 2001
+++ libc/math/tgmath.h Wed Feb 7 07:47:30 2001
@@ -36,6 +36,12 @@
#if __GNUC_PREREQ (2, 7)
+# ifdef __NO_LONG_DOUBLE_MATH
+# define __tgml(fct) fct
+# else
+# define __tgml(fct) fct ## l
+# endif
+
/* This is ugly but unless gcc gets appropriate builtins we have to do
something like this. Don't ask how it works. */
@@ -65,7 +71,7 @@
else if (sizeof (Val) == sizeof (float)) \
__tgmres = Fct##f (Val); \
else \
- __tgmres = Fct##l (Val); \
+ __tgmres = __tgml(Fct) (Val); \
__tgmres; }))
# define __TGMATH_BINARY_FIRST_REAL_ONLY(Val1, Val2, Fct) \
@@ -76,7 +82,7 @@
else if (sizeof (Val1) == sizeof (float)) \
__tgmres = Fct##f (Val1, Val2); \
else \
- __tgmres = Fct##l (Val1, Val2); \
+ __tgmres = __tgml(Fct) (Val1, Val2); \
__tgmres; }))
# define __TGMATH_BINARY_REAL_ONLY(Val1, Val2, Fct) \
@@ -84,7 +90,7 @@
if ((sizeof (Val1) > sizeof (double) \
|| sizeof (Val2) > sizeof (double)) \
&& __builtin_classify_type ((Val1) + (Val2)) == 8) \
- __tgmres = Fct##l (Val1, Val2); \
+ __tgmres = __tgml(Fct) (Val1, Val2); \
else if (sizeof (Val1) == sizeof (double) \
|| sizeof (Val2) == sizeof (double) \
|| __builtin_classify_type ((Val1) \
@@ -99,7 +105,7 @@
if ((sizeof (Val1) > sizeof (double) \
|| sizeof (Val2) > sizeof (double)) \
&& __builtin_classify_type ((Val1) + (Val2)) == 8) \
- __tgmres = Fct##l (Val1, Val2, Val3); \
+ __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
else if (sizeof (Val1) == sizeof (double) \
|| sizeof (Val2) == sizeof (double) \
|| __builtin_classify_type ((Val1) \
@@ -116,7 +122,7 @@
|| sizeof (Val3) > sizeof (double)) \
&& __builtin_classify_type ((Val1) + (Val2) \
+ (Val3)) == 8) \
- __tgmres = Fct##l (Val1, Val2, Val3); \
+ __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
else if (sizeof (Val1) == sizeof (double) \
|| sizeof (Val2) == sizeof (double) \
|| sizeof (Val3) == sizeof (double) \
@@ -135,9 +141,9 @@
&& __builtin_classify_type (__real__ (Val)) == 8) \
{ \
if (sizeof (__real__ (Val)) == sizeof (Val)) \
- __tgmres = Fct##l (Val); \
+ __tgmres = __tgml(Fct) (Val); \
else \
- __tgmres = Cfct##l (Val); \
+ __tgmres = __tgml(Cfct) (Val); \
} \
else if (sizeof (__real__ (Val)) == sizeof (double) \
|| __builtin_classify_type (__real__ (Val)) \
@@ -167,7 +173,7 @@
else if (sizeof (Val) == sizeof (__complex__ float)) \
__tgmres = Fct##f (Val); \
else \
- __tgmres = Fct##l (Val); \
+ __tgmres = __tgml(Fct) (Val); \
__tgmres; }))
/* XXX This definition has to be changed as soon as the compiler understands
@@ -182,9 +188,9 @@
{ \
if (sizeof (__real__ (Val1)) == sizeof (Val1) \
&& sizeof (__real__ (Val2)) == sizeof (Val2)) \
- __tgmres = Fct##l (Val1, Val2); \
+ __tgmres = __tgml(Fct) (Val1, Val2); \
else \
- __tgmres = Cfct##l (Val1, Val2); \
+ __tgmres = __tgml(Cfct) (Val1, Val2); \
} \
else if (sizeof (__real__ (Val1)) == sizeof (double) \
|| sizeof (__real__ (Val2)) == sizeof(double) \
--- libc/sysdeps/alpha/fpu/bits/mathinline.h.jj Thu Jun 8 06:03:42 2000
+++ libc/sysdeps/alpha/fpu/bits/mathinline.h Wed Feb 7 08:31:40 2001
@@ -1,5 +1,5 @@
/* Inline math functions for Alpha.
- Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger-Tang.
@@ -58,6 +58,8 @@
!isunordered(__x, __y) && __x != __y; }))
#endif /* ISO C99 */
+#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
+
#define __inline_copysign(NAME, TYPE) \
__MATH_INLINE TYPE \
NAME (TYPE __x, TYPE __y) __THROW \
@@ -174,4 +176,6 @@ __MATH_INLINE double fdim (double __x, d
return __x < __y ? 0.0 : __x - __y;
}
-#endif
+#endif /* C99 */
+
+#endif /* __NO_MATH_INLINES */
Jakub
More information about the Libc-hacker
mailing list