about summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
Diffstat (limited to 'math')
-rw-r--r--math/tgmath.h26
1 files changed, 16 insertions, 10 deletions
diff --git a/math/tgmath.h b/math/tgmath.h
index 286ea56df0..0c02aaa6e7 100644
--- a/math/tgmath.h
+++ b/math/tgmath.h
@@ -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) \