Don't define via builtins.
authordrepper <drepper>
Wed, 10 Mar 2004 05:58:17 +0000 (05:58 +0000)
committerdrepper <drepper>
Wed, 10 Mar 2004 05:58:17 +0000 (05:58 +0000)
sysdeps/i386/fpu/bits/mathinline.h
sysdeps/m68k/fpu/bits/mathinline.h
sysdeps/powerpc/fpu/bits/mathinline.h
sysdeps/sparc/fpu/bits/mathinline.h
sysdeps/x86_64/fpu/bits/mathinline.h

index ab3b54d..85d48a5 100644 (file)
 
 
 #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2
 
 
 #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2
-# if __GNUC_PREREQ (2,97)
 /* GCC 2.97 and up have builtins that actually can be used.  */
 /* GCC 2.97 and up have builtins that actually can be used.  */
-#  define isgreater(x, y) __builtin_isgreater (x, y)
-#  define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-#  define isless(x, y) __builtin_isless (x, y)
-#  define islessequal(x, y) __builtin_islessequal (x, y)
-#  define islessgreater(x, y) __builtin_islessgreater (x, y)
-#  define isunordered(x, y) __builtin_isunordered (x, y)
-# else
+# if !__GNUC_PREREQ (2,97)
 /* ISO C99 defines some macros to perform unordered comparisons.  The
    ix87 FPU supports this with special opcodes and we should use them.
    These must not be inline functions since we have to be able to handle
    all floating-point types.  */
 /* ISO C99 defines some macros to perform unordered comparisons.  The
    ix87 FPU supports this with special opcodes and we should use them.
    These must not be inline functions since we have to be able to handle
    all floating-point types.  */
+#  undef isgreater
+#  undef isgreaterequal
+#  undef isless
+#  undef islessequal
+#  undef islessgreater
+#  undef isunordered
 #  ifdef __i686__
 /* For the PentiumPro and more recent processors we can provide
    better code.  */
 #  ifdef __i686__
 /* For the PentiumPro and more recent processors we can provide
    better code.  */
index ec00b4b..1e43e43 100644 (file)
 #ifdef __GNUC__
 
 #ifdef __USE_ISOC99
 #ifdef __GNUC__
 
 #ifdef __USE_ISOC99
-
-# if __GNUC_PREREQ (3,1)
 /* GCC 3.1 and up have builtins that actually can be used.  */
 /* GCC 3.1 and up have builtins that actually can be used.  */
-#  define isgreater(x, y) __builtin_isgreater (x, y)
-#  define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-#  define isless(x, y) __builtin_isless (x, y)
-#  define islessequal(x, y) __builtin_islessequal (x, y)
-#  define islessgreater(x, y) __builtin_islessgreater (x, y)
-#  define isunordered(x, y) __builtin_isunordered (x, y)
-# else
+# if !__GNUC_PREREQ (3,1)
 /* ISO C99 defines some macros to perform unordered comparisons.  The
    m68k FPU supports this with special opcodes and we should use them.
    These must not be inline functions since we have to be able to handle
    all floating-point types.  */
 /* ISO C99 defines some macros to perform unordered comparisons.  The
    m68k FPU supports this with special opcodes and we should use them.
    These must not be inline functions since we have to be able to handle
    all floating-point types.  */
+#  undef isgreater
+#  undef isgreaterequal
+#  undef isless
+#  undef islessequal
+#  undef islessgreater
+#  undef isunordered
 #  define isgreater(x, y)                                      \
    __extension__                                       \
    ({ char __result;                                   \
 #  define isgreater(x, y)                                      \
    __extension__                                       \
    ({ char __result;                                   \
index dcd506d..01956d9 100644 (file)
 #if defined __GNUC__ && !defined _SOFT_FLOAT
 
 #ifdef __USE_ISOC99
 #if defined __GNUC__ && !defined _SOFT_FLOAT
 
 #ifdef __USE_ISOC99
-# if __GNUC_PREREQ (2,96)
-
-#  define isgreater(x, y) __builtin_isgreater (x, y)
-#  define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-#  define isless(x, y) __builtin_isless (x, y)
-#  define islessequal(x, y) __builtin_islessequal (x, y)
-#  define islessgreater(x, y) __builtin_islessgreater (x, y)
-#  define isunordered(x, y) __builtin_isunordered (x, y)
-
-# else
-
+# if !__GNUC_PREREQ (2,97)
 #  define __unordered_cmp(x, y) \
   (__extension__                                                             \
    ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y);                              \
 #  define __unordered_cmp(x, y) \
   (__extension__                                                             \
    ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y);                              \
               : "cr7");  \
       __r; }))
 
               : "cr7");  \
       __r; }))
 
+#  undef isgreater
+#  undef isgreaterequal
+#  undef isless
+#  undef islessequal
+#  undef islessgreater
+#  undef isunordered
+
 #  define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1)
 #  define isgreaterequal(x, y) ((__unordered_cmp (x, y) & 6) != 0)
 #  define isless(x, y) (__unordered_cmp (x, y) >> 3 & 1)
 #  define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1)
 #  define isgreaterequal(x, y) ((__unordered_cmp (x, y) & 6) != 0)
 #  define isless(x, y) (__unordered_cmp (x, y) >> 3 & 1)
index 81c2539..734ff05 100644 (file)
 
 #include <bits/wordsize.h>
 
 
 #include <bits/wordsize.h>
 
-#ifdef __GNUC__
-
-#ifdef __USE_ISOC99
+#if defined __USE_ISOC99 && defined __GNUC__ && !__GNUC_PREREQ(3,0)
+# undef isgreater
+# undef isgreaterequal
+# undef isless
+# undef islessequal
+# undef islessgreater
+# undef isunordered
 
 # if __WORDSIZE == 32
 
 
 # if __WORDSIZE == 32
 
index c77412d..3f61ff5 100644 (file)
 
 
 #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2
 
 
 #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2
-/* GCC has builtins that can be used.  */
-# define isgreater(x, y) __builtin_isgreater (x, y)
-# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-# define isless(x, y) __builtin_isless (x, y)
-# define islessequal(x, y) __builtin_islessequal (x, y)
-# define islessgreater(x, y) __builtin_islessgreater (x, y)
-# define isunordered(x, y) __builtin_isunordered (x, y)
-
 
 /* Test for negative number.  Used in the signbit() macro.  */
 __MATH_INLINE int
 
 /* Test for negative number.  Used in the signbit() macro.  */
 __MATH_INLINE int