This is the mail archive of the libc-hacker@sources.redhat.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]

[PATCH] Fix test-tgmath failure on alpha


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

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