Hello!

Attached (mostly mechanical) patch uses equivalent built-in functions
for fabsq, copysignq and nanq. The patch allows more aggressive
compiler optimizations, where for fabsq and copysignq, the compiler
will emit 128bit SSE bitops, and a 128bit constant load instead of
nanq function call.

The patch also improves detection of required builtins, so for ia64,
additional patch [1] is needed.

2016-06-12  Uros Bizjak  <ubiz...@gmail.com>

    * configure.ac (__float128 support): Also test _builtin_fabsq,
    __builtin_copysignq, __builtin_infq and __builtin_nanq.
    * configure: Regenerate.
    * math/*.c: Use __builtin_fabsq instead of fabsq, __builtin_copysignq
    instead of copysignq, __builtin_infq instead of __builtin_inf and
    __builtin_nanq instead of nanq.

Patch was bootstrapped and regression tested on x86_64-linux-gnu
{,-m32}. I have also checked, that no fabsq, copysignq or nanq calls
remain in the library.

OK for mainline?

[1] https://gcc.gnu.org/ml/gcc-patches/2016-06/msg00888.html

Uros.
Index: configure
===================================================================
--- configure   (revision 237340)
+++ configure   (working copy)
@@ -8513,7 +8513,7 @@ _LT_EOF
        if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
          export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if 
(((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && 
(substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
        else
-         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if 
(((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != 
".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if 
(((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && 
(substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
        fi
        aix_use_runtimelinking=no
 
@@ -12514,29 +12514,53 @@ else
 
     typedef _Complex float __attribute__((mode(TC))) __complex128;
 
-    __float128 foo (__float128 x)
+    __float128 test_cplx (__float128 x)
     {
 
-     __complex128 z1, z2;
+      __complex128 z1, z2;
 
-     z1 = x;
-     z2 = x / 7.Q;
-     z2 /= z1;
+      z1 = x;
+      z2 = x / 7.Q;
+      z2 /= z1;
 
-     return (__float128) z2;
+      return (__float128) z2;
     }
 
-    __float128 bar (__float128 x)
+    __float128 test_fabs (__float128 x)
     {
+      return __builtin_fabsq (x);
+    }
+
+    __float128 test_copysign (__float128 x, __float128 y)
+    {
+      return __builtin_copysignq (x, y);
+    }
+
+    __float128 test_huge_val (__float128 x)
+    {
       return x * __builtin_huge_valq ();
     }
 
+    __float128 test_inf (__float128 x)
+    {
+      return x * __builtin_infq ();
+    }
+
+    __float128 test_nan (__float128 x)
+    {
+      return x * __builtin_nanq ("");
+    }
+
 int
 main ()
 {
 
-    foo (1.2Q);
-    bar (1.2Q);
+    test_cplx (1.2Q);
+    test_fabs (1.2Q);
+    test_copysign (1.2Q, -1.2Q);
+    test_huge_val (1.2Q);
+    test_inf (1.2Q);
+    test_nan (1.2Q);
 
   ;
   return 0;
@@ -12561,29 +12585,53 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 
     typedef _Complex float __attribute__((mode(TC))) __complex128;
 
-    __float128 foo (__float128 x)
+    __float128 test_cplx (__float128 x)
     {
 
-     __complex128 z1, z2;
+      __complex128 z1, z2;
 
-     z1 = x;
-     z2 = x / 7.Q;
-     z2 /= z1;
+      z1 = x;
+      z2 = x / 7.Q;
+      z2 /= z1;
 
-     return (__float128) z2;
+      return (__float128) z2;
     }
 
-    __float128 bar (__float128 x)
+    __float128 test_fabs (__float128 x)
     {
+      return __builtin_fabsq (x);
+    }
+
+    __float128 test_copysign (__float128 x, __float128 y)
+    {
+      return __builtin_copysignq (x, y);
+    }
+
+    __float128 test_huge_val (__float128 x)
+    {
       return x * __builtin_huge_valq ();
     }
 
+    __float128 test_inf (__float128 x)
+    {
+      return x * __builtin_infq ();
+    }
+
+    __float128 test_nan (__float128 x)
+    {
+      return x * __builtin_nanq ("");
+    }
+
 int
 main ()
 {
 
-    foo (1.2Q);
-    bar (1.2Q);
+    test_cplx (1.2Q);
+    test_fabs (1.2Q);
+    test_copysign (1.2Q, -1.2Q);
+    test_huge_val (1.2Q);
+    test_inf (1.2Q);
+    test_nan (1.2Q);
 
   ;
   return 0;
Index: configure.ac
===================================================================
--- configure.ac        (revision 237340)
+++ configure.ac        (working copy)
@@ -212,25 +212,49 @@ AC_CACHE_CHECK([whether __float128 is supported],
   [GCC_TRY_COMPILE_OR_LINK([
     typedef _Complex float __attribute__((mode(TC))) __complex128;
 
-    __float128 foo (__float128 x)
+    __float128 test_cplx (__float128 x)
     {
 
-     __complex128 z1, z2;
+      __complex128 z1, z2;
 
-     z1 = x;
-     z2 = x / 7.Q;
-     z2 /= z1;
+      z1 = x;
+      z2 = x / 7.Q;
+      z2 /= z1;
 
-     return (__float128) z2;
+      return (__float128) z2;
     }
 
-    __float128 bar (__float128 x)
+    __float128 test_fabs (__float128 x)
     {
+      return __builtin_fabsq (x);
+    }
+
+    __float128 test_copysign (__float128 x, __float128 y)
+    {
+      return __builtin_copysignq (x, y);
+    }
+
+    __float128 test_huge_val (__float128 x)
+    {
       return x * __builtin_huge_valq ();
     }
+
+    __float128 test_inf (__float128 x)
+    {
+      return x * __builtin_infq ();
+    }
+
+    __float128 test_nan (__float128 x)
+    {
+      return x * __builtin_nanq ("");
+    }
   ],[
-    foo (1.2Q);
-    bar (1.2Q);
+    test_cplx (1.2Q);
+    test_fabs (1.2Q);
+    test_copysign (1.2Q, -1.2Q);
+    test_huge_val (1.2Q);
+    test_inf (1.2Q);
+    test_nan (1.2Q);
   ],[
     libquad_cv_have_float128=yes
   ],[
Index: math/atan2q.c
===================================================================
--- math/atan2q.c       (revision 237340)
+++ math/atan2q.c       (working copy)
@@ -104,7 +104,7 @@ atan2q (__float128 y, __float128 x)
        k = (iy-ix)>>48;
        if(k > 120) z=pi_o_2+0.5Q*pi_lo;        /* |y/x| >  2**120 */
        else if(hx<0&&k<-120) z=0.0Q;           /* |y|/x < -2**120 */
-       else z=atanq(fabsq(y/x));               /* safe to do y/x */
+       else z=atanq(__builtin_fabsq(y/x));             /* safe to do y/x */
        switch (m) {
            case 0: return       z  ;   /* atan(+,+) */
            case 1: {
Index: math/cacoshq.c
===================================================================
--- math/cacoshq.c      (revision 237340)
+++ math/cacoshq.c      (working copy)
@@ -35,9 +35,9 @@ cacoshq (__complex128 x)
          __real__ res = HUGE_VALQ;
 
          if (rcls == QUADFP_NAN)
-           __imag__ res = nanq ("");
+           __imag__ res = __builtin_nanq ("");
          else
-           __imag__ res = copysignq ((rcls == QUADFP_INFINITE
+           __imag__ res = __builtin_copysignq ((rcls == QUADFP_INFINITE
                                       ? (__real__ x < 0.0
                                          ? M_PIq - M_PI_4q : M_PI_4q)
                                       : M_PI_2q), __imag__ x);
@@ -47,24 +47,24 @@ cacoshq (__complex128 x)
          __real__ res = HUGE_VALQ;
 
          if (icls >= QUADFP_ZERO)
-           __imag__ res = copysignq (signbitq (__real__ x) ? M_PIq : 0.0,
+           __imag__ res = __builtin_copysignq (signbitq (__real__ x) ? M_PIq : 
0.0,
                                      __imag__ x);
          else
-           __imag__ res = nanq ("");
+           __imag__ res = __builtin_nanq ("");
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
        }
     }
   else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
     {
       __real__ res = 0.0;
-      __imag__ res = copysignq (M_PI_2q, __imag__ x);
+      __imag__ res = __builtin_copysignq (M_PI_2q, __imag__ x);
     }
   /* The factor 16 is just a guess.  */
-  else if (16.0Q * fabsq (__imag__ x) < fabsq (__real__ x))
+  else if (16.0Q * __builtin_fabsq (__imag__ x) < __builtin_fabsq (__real__ x))
     {
       /* Kahan's formula which avoid cancellation through subtraction in
         some cases.  */
Index: math/casinhq.c
===================================================================
--- math/casinhq.c      (revision 237340)
+++ math/casinhq.c      (working copy)
@@ -32,12 +32,12 @@ casinhq (__complex128 x)
     {
       if (icls == QUADFP_INFINITE)
        {
-         __real__ res = copysignq (HUGE_VALQ, __real__ x);
+         __real__ res = __builtin_copysignq (HUGE_VALQ, __real__ x);
 
          if (rcls == QUADFP_NAN)
-           __imag__ res = nanq ("");
+           __imag__ res = __builtin_nanq ("");
          else
-           __imag__ res = copysignq (rcls >= QUADFP_ZERO ? M_PI_2q : M_PI_4q,
+           __imag__ res = __builtin_copysignq (rcls >= QUADFP_ZERO ? M_PI_2q : 
M_PI_4q,
                                      __imag__ x);
        }
       else if (rcls <= QUADFP_INFINITE)
@@ -45,14 +45,14 @@ casinhq (__complex128 x)
          __real__ res = __real__ x;
          if ((rcls == QUADFP_INFINITE && icls >= QUADFP_ZERO)
              || (rcls == QUADFP_NAN && icls == QUADFP_ZERO))
-           __imag__ res = copysignq (0.0, __imag__ x);
+           __imag__ res = __builtin_copysignq (0.0, __imag__ x);
          else
-           __imag__ res = nanq ("");
+           __imag__ res = __builtin_nanq ("");
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
        }
     }
   else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
@@ -75,8 +75,8 @@ casinhq (__complex128 x)
 
       /* Ensure zeros have correct sign and results are correct if
         very close to branch cuts.  */
-      __real__ res = copysignq (__real__ res, __real__ x);
-      __imag__ res = copysignq (__imag__ res, __imag__ x);
+      __real__ res = __builtin_copysignq (__real__ res, __real__ x);
+      __imag__ res = __builtin_copysignq (__imag__ res, __imag__ x);
     }
 
   return res;
Index: math/casinq.c
===================================================================
--- math/casinq.c       (revision 237340)
+++ math/casinq.c       (working copy)
@@ -34,13 +34,13 @@ casinq (__complex128 x)
        }
       else if (isinfq (__real__ x) || isinfq (__imag__ x))
        {
-         __real__ res = nanq ("");
-         __imag__ res = copysignq (HUGE_VALQ, __imag__ x);
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_copysignq (HUGE_VALQ, __imag__ x);
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
        }
     }
   else
Index: math/catanhq.c
===================================================================
--- math/catanhq.c      (revision 237340)
+++ math/catanhq.c      (working copy)
@@ -32,21 +32,21 @@ catanhq (__complex128 x)
     {
       if (icls == QUADFP_INFINITE)
        {
-         __real__ res = copysignq (0.0, __real__ x);
-         __imag__ res = copysignq (M_PI_2q, __imag__ x);
+         __real__ res = __builtin_copysignq (0.0, __real__ x);
+         __imag__ res = __builtin_copysignq (M_PI_2q, __imag__ x);
        }
       else if (rcls == QUADFP_INFINITE || rcls == QUADFP_ZERO)
        {
-         __real__ res = copysignq (0.0, __real__ x);
+         __real__ res = __builtin_copysignq (0.0, __real__ x);
          if (icls >= QUADFP_ZERO)
-           __imag__ res = copysignq (M_PI_2q, __imag__ x);
+           __imag__ res = __builtin_copysignq (M_PI_2q, __imag__ x);
          else
-           __imag__ res = nanq ("");
+           __imag__ res = __builtin_nanq ("");
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
        }
     }
   else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
Index: math/catanq.c
===================================================================
--- math/catanq.c       (revision 237340)
+++ math/catanq.c       (working copy)
@@ -32,26 +32,26 @@ catanq (__complex128 x)
     {
       if (rcls == QUADFP_INFINITE)
        {
-         __real__ res = copysignq (M_PI_2q, __real__ x);
-         __imag__ res = copysignq (0.0, __imag__ x);
+         __real__ res = __builtin_copysignq (M_PI_2q, __real__ x);
+         __imag__ res = __builtin_copysignq (0.0, __imag__ x);
        }
       else if (icls == QUADFP_INFINITE)
        {
          if (rcls >= QUADFP_ZERO)
-           __real__ res = copysignq (M_PI_2q, __real__ x);
+           __real__ res = __builtin_copysignq (M_PI_2q, __real__ x);
          else
-           __real__ res = nanq ("");
-         __imag__ res = copysignq (0.0, __imag__ x);
+           __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_copysignq (0.0, __imag__ x);
        }
       else if (icls == QUADFP_ZERO || icls == QUADFP_INFINITE)
        {
-         __real__ res = nanq ("");
-         __imag__ res = copysignq (0.0, __imag__ x);
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_copysignq (0.0, __imag__ x);
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
        }
     }
   else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
Index: math/ccoshq.c
===================================================================
--- math/ccoshq.c       (revision 237340)
+++ math/ccoshq.c       (working copy)
@@ -50,10 +50,10 @@ ccoshq (__complex128 x)
              cosix = 1.0Q;
            }
 
-         if (fabsq (__real__ x) > t)
+         if (__builtin_fabsq (__real__ x) > t)
            {
              __float128 exp_t = expq (t);
-             __float128 rx = fabsq (__real__ x);
+             __float128 rx = __builtin_fabsq (__real__ x);
              if (signbitq (__real__ x))
                sinix = -sinix;
              rx -= t;
@@ -86,8 +86,8 @@ ccoshq (__complex128 x)
        }
       else
        {
-         __imag__ retval = __real__ x == 0.0Q ? 0.0Q : nanq ("");
-         __real__ retval = nanq ("") + nanq ("");
+         __imag__ retval = __real__ x == 0.0Q ? 0.0Q : __builtin_nanq ("");
+         __real__ retval = __builtin_nanq ("") + __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
          if (icls == QUADFP_INFINITE)
@@ -113,21 +113,21 @@ ccoshq (__complex128 x)
              cosix = 1.0Q;
            }
 
-         __real__ retval = copysignq (HUGE_VALQ, cosix);
-         __imag__ retval = (copysignq (HUGE_VALQ, sinix)
-                            * copysignq (1.0Q, __real__ x));
+         __real__ retval = __builtin_copysignq (HUGE_VALQ, cosix);
+         __imag__ retval = (__builtin_copysignq (HUGE_VALQ, sinix)
+                            * __builtin_copysignq (1.0Q, __real__ x));
        }
       else if (icls == QUADFP_ZERO)
        {
          /* Imaginary part is 0.0.  */
          __real__ retval = HUGE_VALQ;
-         __imag__ retval = __imag__ x * copysignq (1.0Q, __real__ x);
+         __imag__ retval = __imag__ x * __builtin_copysignq (1.0Q, __real__ x);
        }
       else
        {
          /* The addition raises the invalid exception.  */
          __real__ retval = HUGE_VALQ;
-         __imag__ retval = nanq ("") + nanq ("");
+         __imag__ retval = __builtin_nanq ("") + __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
          if (icls == QUADFP_INFINITE)
@@ -137,8 +137,8 @@ ccoshq (__complex128 x)
     }
   else
     {
-      __real__ retval = nanq ("");
-      __imag__ retval = __imag__ x == 0.0 ? __imag__ x : nanq ("");
+      __real__ retval = __builtin_nanq ("");
+      __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __builtin_nanq ("");
     }
 
   return retval;
Index: math/cexpq.c
===================================================================
--- math/cexpq.c        (revision 237340)
+++ math/cexpq.c        (working copy)
@@ -80,8 +80,8 @@ cexpq (__complex128 x)
        {
          /* If the imaginary part is +-inf or NaN and the real part
             is not +-inf the result is NaN + iNaN.  */
-         __real__ retval = nanq ("");
-         __imag__ retval = nanq ("");
+         __real__ retval = __builtin_nanq ("");
+         __imag__ retval = __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
          feraiseexcept (FE_INVALID);
@@ -116,14 +116,14 @@ cexpq (__complex128 x)
                  cosix = 1.0Q;
                }
 
-             __real__ retval = copysignq (value, cosix);
-             __imag__ retval = copysignq (value, sinix);
+             __real__ retval = __builtin_copysignq (value, cosix);
+             __imag__ retval = __builtin_copysignq (value, sinix);
            }
        }
       else if (signbitq (__real__ x) == 0)
        {
          __real__ retval = HUGE_VALQ;
-         __imag__ retval = nanq ("");
+         __imag__ retval = __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
          if (icls == QUADFP_INFINITE)
@@ -133,14 +133,14 @@ cexpq (__complex128 x)
       else
        {
          __real__ retval = 0.0Q;
-         __imag__ retval = copysignq (0.0Q, __imag__ x);
+         __imag__ retval = __builtin_copysignq (0.0Q, __imag__ x);
        }
     }
   else
     {
       /* If the real part is NaN the result is NaN + iNaN.  */
-      __real__ retval = nanq ("");
-      __imag__ retval = nanq ("");
+      __real__ retval = __builtin_nanq ("");
+      __imag__ retval = __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
       if (rcls != QUADFP_NAN || icls != QUADFP_NAN)
Index: math/clog10q.c
===================================================================
--- math/clog10q.c      (revision 237340)
+++ math/clog10q.c      (working copy)
@@ -35,14 +35,14 @@ clog10q (__complex128 x)
     {
       /* Real and imaginary part are 0.0.  */
       __imag__ result = signbitq (__real__ x) ? M_PIq : 0.0Q;
-      __imag__ result = copysignq (__imag__ result, __imag__ x);
+      __imag__ result = __builtin_copysignq (__imag__ result, __imag__ x);
       /* Yes, the following line raises an exception.  */
-      __real__ result = -1.0Q / fabsq (__real__ x);
+      __real__ result = -1.0Q / __builtin_fabsq (__real__ x);
     }
   else if (__builtin_expect (rcls != QUADFP_NAN && icls != QUADFP_NAN, 1))
     {
       /* Neither real nor imaginary part is NaN.  */
-      __float128 absx = fabsq (__real__ x), absy = fabsq (__imag__ x);
+      __float128 absx = __builtin_fabsq (__real__ x), absy = __builtin_fabsq 
(__imag__ x);
       int scale = 0;
 
       if (absx < absy)
@@ -104,12 +104,12 @@ clog10q (__complex128 x)
     }
   else
     {
-      __imag__ result = nanq ("");
+      __imag__ result = __builtin_nanq ("");
       if (rcls == QUADFP_INFINITE || icls == QUADFP_INFINITE)
        /* Real or imaginary part is infinite.  */
        __real__ result = HUGE_VALQ;
       else
-       __real__ result = nanq ("");
+       __real__ result = __builtin_nanq ("");
     }
 
   return result;
Index: math/clogq.c
===================================================================
--- math/clogq.c        (revision 237340)
+++ math/clogq.c        (working copy)
@@ -31,14 +31,14 @@ clogq (__complex128 x)
     {
       /* Real and imaginary part are 0.0.  */
       __imag__ result = signbitq (__real__ x) ? M_PIq : 0.0Q;
-      __imag__ result = copysignq (__imag__ result, __imag__ x);
+      __imag__ result = __builtin_copysignq (__imag__ result, __imag__ x);
       /* Yes, the following line raises an exception.  */
-      __real__ result = -1.0Q / fabsq (__real__ x);
+      __real__ result = -1.0Q / __builtin_fabsq (__real__ x);
     }
   else if (__builtin_expect (rcls != QUADFP_NAN && icls != QUADFP_NAN, 1))
     {
       /* Neither real nor imaginary part is NaN.  */
-      __float128 absx = fabsq (__real__ x), absy = fabsq (__imag__ x);
+      __float128 absx = __builtin_fabsq (__real__ x), absy = __builtin_fabsq 
(__imag__ x);
       int scale = 0;
 
       if (absx < absy)
@@ -99,12 +99,12 @@ clogq (__complex128 x)
     }
   else
     {
-      __imag__ result = nanq ("");
+      __imag__ result = __builtin_nanq ("");
       if (rcls == QUADFP_INFINITE || icls == QUADFP_INFINITE)
        /* Real or imaginary part is infinite.  */
        __real__ result = HUGE_VALQ;
       else
-       __real__ result = nanq ("");
+       __real__ result = __builtin_nanq ("");
     }
 
   return result;
Index: math/cprojq.c
===================================================================
--- math/cprojq.c       (revision 237340)
+++ math/cprojq.c       (working copy)
@@ -30,8 +30,8 @@ cprojq (__complex128 x)
     {
       __complex128 res;
 
-      __real__ res = __builtin_inf ();
-      __imag__ res = copysignq (0.0, __imag__ x);
+      __real__ res = __builtin_infq ();
+      __imag__ res = __builtin_copysignq (0.0, __imag__ x);
 
       return res;
     }
Index: math/csinhq.c
===================================================================
--- math/csinhq.c       (revision 237340)
+++ math/csinhq.c       (working copy)
@@ -32,7 +32,7 @@ csinhq (__complex128 x)
   int rcls = fpclassifyq (__real__ x);
   int icls = fpclassifyq (__imag__ x);
 
-  __real__ x = fabsq (__real__ x);
+  __real__ x = __builtin_fabsq (__real__ x);
 
   if (__builtin_expect (rcls >= QUADFP_ZERO, 1))
     {
@@ -53,10 +53,10 @@ csinhq (__complex128 x)
              cosix = 1.0Q;
            }
 
-         if (fabsq (__real__ x) > t)
+         if (__builtin_fabsq (__real__ x) > t)
            {
              __float128 exp_t = expq (t);
-             __float128 rx = fabsq (__real__ x);
+             __float128 rx = __builtin_fabsq (__real__ x);
              if (signbitq (__real__ x))
                cosix = -cosix;
              rx -= t;
@@ -95,8 +95,8 @@ csinhq (__complex128 x)
          if (rcls == QUADFP_ZERO)
            {
              /* Real part is 0.0.  */
-             __real__ retval = copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
-             __imag__ retval = nanq ("") + nanq ("");
+             __real__ retval = __builtin_copysignq (0.0Q, negate ? -1.0Q : 
1.0Q);
+             __imag__ retval = __builtin_nanq ("") + __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
              if (icls == QUADFP_INFINITE)
@@ -105,8 +105,8 @@ csinhq (__complex128 x)
            }
          else
            {
-             __real__ retval = nanq ("");
-             __imag__ retval = nanq ("");
+             __real__ retval = __builtin_nanq ("");
+             __imag__ retval = __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
              feraiseexcept (FE_INVALID);
@@ -132,8 +132,8 @@ csinhq (__complex128 x)
              cosix = 1.0;
            }
 
-         __real__ retval = copysignq (HUGE_VALQ, cosix);
-         __imag__ retval = copysignq (HUGE_VALQ, sinix);
+         __real__ retval = __builtin_copysignq (HUGE_VALQ, cosix);
+         __imag__ retval = __builtin_copysignq (HUGE_VALQ, sinix);
 
          if (negate)
            __real__ retval = -__real__ retval;
@@ -148,7 +148,7 @@ csinhq (__complex128 x)
        {
          /* The addition raises the invalid exception.  */
          __real__ retval = HUGE_VALQ;
-         __imag__ retval = nanq ("") + nanq ("");
+         __imag__ retval = __builtin_nanq ("") + __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
          if (icls == QUADFP_INFINITE)
@@ -158,8 +158,8 @@ csinhq (__complex128 x)
     }
   else
     {
-      __real__ retval = nanq ("");
-      __imag__ retval = __imag__ x == 0.0Q ? __imag__ x : nanq ("");
+      __real__ retval = __builtin_nanq ("");
+      __imag__ retval = __imag__ x == 0.0Q ? __imag__ x : __builtin_nanq ("");
     }
 
   return retval;
Index: math/csinq.c
===================================================================
--- math/csinq.c        (revision 237340)
+++ math/csinq.c        (working copy)
@@ -32,7 +32,7 @@ csinq (__complex128 x)
   int rcls = fpclassifyq (__real__ x);
   int icls = fpclassifyq (__imag__ x);
 
-  __real__ x = fabsq (__real__ x);
+  __real__ x = __builtin_fabsq (__real__ x);
 
   if (__builtin_expect (icls >= QUADFP_ZERO, 1))
     {
@@ -53,10 +53,10 @@ csinq (__complex128 x)
              cosix = 1.0Q;
            }
 
-         if (fabsq (__imag__ x) > t)
+         if (__builtin_fabsq (__imag__ x) > t)
            {
              __float128 exp_t = expq (t);
-             __float128 ix = fabsq (__imag__ x);
+             __float128 ix = __builtin_fabsq (__imag__ x);
              if (signbitq (__imag__ x))
                cosix = -cosix;
              ix -= t;
@@ -95,7 +95,7 @@ csinq (__complex128 x)
          if (icls == QUADFP_ZERO)
            {
              /* Imaginary part is 0.0.  */
-             __real__ retval = nanq ("");
+             __real__ retval = __builtin_nanq ("");
              __imag__ retval = __imag__ x;
 
 #ifdef HAVE_FENV_H
@@ -105,8 +105,8 @@ csinq (__complex128 x)
            }
          else
            {
-             __real__ retval = nanq ("");
-             __imag__ retval = nanq ("");
+             __real__ retval = __builtin_nanq ("");
+             __imag__ retval = __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
              feraiseexcept (FE_INVALID);
@@ -120,7 +120,7 @@ csinq (__complex128 x)
       if (rcls == QUADFP_ZERO)
        {
          /* Real part is 0.0.  */
-         __real__ retval = copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
+         __real__ retval = __builtin_copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
          __imag__ retval = __imag__ x;
        }
       else if (rcls > QUADFP_ZERO)
@@ -138,8 +138,8 @@ csinq (__complex128 x)
              cosix = 1.0;
            }
 
-         __real__ retval = copysignq (HUGE_VALQ, sinix);
-         __imag__ retval = copysignq (HUGE_VALQ, cosix);
+         __real__ retval = __builtin_copysignq (HUGE_VALQ, sinix);
+         __imag__ retval = __builtin_copysignq (HUGE_VALQ, cosix);
 
          if (negate)
            __real__ retval = -__real__ retval;
@@ -149,7 +149,7 @@ csinq (__complex128 x)
       else
        {
          /* The addition raises the invalid exception.  */
-         __real__ retval = nanq ("");
+         __real__ retval = __builtin_nanq ("");
          __imag__ retval = HUGE_VALQ;
 
 #ifdef HAVE_FENV_H
@@ -161,10 +161,10 @@ csinq (__complex128 x)
   else
     {
       if (rcls == QUADFP_ZERO)
-       __real__ retval = copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
+       __real__ retval = __builtin_copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
       else
-       __real__ retval = nanq ("");
-      __imag__ retval = nanq ("");
+       __real__ retval = __builtin_nanq ("");
+      __imag__ retval = __builtin_nanq ("");
     }
 
   return retval;
Index: math/csqrtq.c
===================================================================
--- math/csqrtq.c       (revision 237340)
+++ math/csqrtq.c       (working copy)
@@ -43,20 +43,20 @@ csqrtq (__complex128 x)
        {
          if (__real__ x < 0.0Q)
            {
-             __real__ res = icls == QUADFP_NAN ? nanq ("") : 0;
-             __imag__ res = copysignq (HUGE_VALQ, __imag__ x);
+             __real__ res = icls == QUADFP_NAN ? __builtin_nanq ("") : 0;
+             __imag__ res = __builtin_copysignq (HUGE_VALQ, __imag__ x);
            }
          else
            {
              __real__ res = __real__ x;
              __imag__ res = (icls == QUADFP_NAN
-                             ? nanq ("") : copysignq (0.0Q, __imag__ x));
+                             ? __builtin_nanq ("") : __builtin_copysignq 
(0.0Q, __imag__ x));
            }
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
        }
     }
   else
@@ -66,25 +66,25 @@ csqrtq (__complex128 x)
          if (__real__ x < 0.0Q)
            {
              __real__ res = 0.0Q;
-             __imag__ res = copysignq (sqrtq (-__real__ x),
+             __imag__ res = __builtin_copysignq (sqrtq (-__real__ x),
                                        __imag__ x);
            }
          else
            {
-             __real__ res = fabsq (sqrtq (__real__ x));
-             __imag__ res = copysignq (0.0Q, __imag__ x);
+             __real__ res = __builtin_fabsq (sqrtq (__real__ x));
+             __imag__ res = __builtin_copysignq (0.0Q, __imag__ x);
            }
        }
       else if (__builtin_expect (rcls == QUADFP_ZERO, 0))
        {
          __float128 r;
-         if (fabsq (__imag__ x) >= 2.0Q * FLT128_MIN)
-           r = sqrtq (0.5Q * fabsq (__imag__ x));
+         if (__builtin_fabsq (__imag__ x) >= 2.0Q * FLT128_MIN)
+           r = sqrtq (0.5Q * __builtin_fabsq (__imag__ x));
          else
-           r = 0.5Q * sqrtq (2.0Q * fabsq (__imag__ x));
+           r = 0.5Q * sqrtq (2.0Q * __builtin_fabsq (__imag__ x));
 
          __real__ res = r;
-         __imag__ res = copysignq (r, __imag__ x);
+         __imag__ res = __builtin_copysignq (r, __imag__ x);
        }
       else
        {
@@ -91,23 +91,23 @@ csqrtq (__complex128 x)
          __float128 d, r, s;
          int scale = 0;
 
-         if (fabsq (__real__ x) > FLT128_MAX / 4.0Q)
+         if (__builtin_fabsq (__real__ x) > FLT128_MAX / 4.0Q)
            {
              scale = 1;
              __real__ x = scalbnq (__real__ x, -2 * scale);
              __imag__ x = scalbnq (__imag__ x, -2 * scale);
            }
-         else if (fabsq (__imag__ x) > FLT128_MAX / 4.0Q)
+         else if (__builtin_fabsq (__imag__ x) > FLT128_MAX / 4.0Q)
            {
              scale = 1;
-             if (fabsq (__real__ x) >= 4.0Q * FLT128_MIN)
+             if (__builtin_fabsq (__real__ x) >= 4.0Q * FLT128_MIN)
                __real__ x = scalbnq (__real__ x, -2 * scale);
              else
                __real__ x = 0.0Q;
              __imag__ x = scalbnq (__imag__ x, -2 * scale);
            }
-         else if (fabsq (__real__ x) < FLT128_MIN
-                  && fabsq (__imag__ x) < FLT128_MIN)
+         else if (__builtin_fabsq (__real__ x) < FLT128_MIN
+                  && __builtin_fabsq (__imag__ x) < FLT128_MIN)
            {
              scale = -(FLT128_MANT_DIG / 2);
              __real__ x = scalbnq (__real__ x, -2 * scale);
@@ -125,7 +125,7 @@ csqrtq (__complex128 x)
          else
            {
              s = sqrtq (0.5Q * (d - __real__ x));
-             r = fabsq (0.5Q * (__imag__ x / s));
+             r = __builtin_fabsq (0.5Q * (__imag__ x / s));
            }
 
          if (scale)
@@ -135,7 +135,7 @@ csqrtq (__complex128 x)
            }
 
          __real__ res = r;
-         __imag__ res = copysignq (s, __imag__ x);
+         __imag__ res = __builtin_copysignq (s, __imag__ x);
        }
     }
 
Index: math/ctanhq.c
===================================================================
--- math/ctanhq.c       (revision 237340)
+++ math/ctanhq.c       (working copy)
@@ -33,8 +33,8 @@ ctanhq (__complex128 x)
     {
       if (__quadmath_isinf_nsq (__real__ x))
        {
-         __real__ res = copysignq (1.0Q, __real__ x);
-         __imag__ res = copysignq (0.0Q, __imag__ x);
+         __real__ res = __builtin_copysignq (1.0Q, __real__ x);
+         __imag__ res = __builtin_copysignq (0.0Q, __imag__ x);
        }
       else if (__imag__ x == 0.0Q)
        {
@@ -42,8 +42,8 @@ ctanhq (__complex128 x)
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
          if (__quadmath_isinf_nsq (__imag__ x))
@@ -71,7 +71,7 @@ ctanhq (__complex128 x)
          cosix = 1.0Q;
        }
 
-      if (fabsq (__real__ x) > t)
+      if (__builtin_fabsq (__real__ x) > t)
        {
          /* Avoid intermediate overflow when the imaginary part of
             the result may be subnormal.  Ignoring negligible terms,
@@ -79,9 +79,9 @@ ctanhq (__complex128 x)
             sin(y)*cos(y)/sinh(x)^2 = 4*sin(y)*cos(y)/exp(2x).  */
          __float128 exp_2t = expq (2 * t);
 
-         __real__ res = copysignq (1.0, __real__ x);
+         __real__ res = __builtin_copysignq (1.0, __real__ x);
          __imag__ res = 4 * sinix * cosix;
-         __real__ x = fabsq (__real__ x);
+         __real__ x = __builtin_fabsq (__real__ x);
          __real__ x -= t;
          __imag__ res /= exp_2t;
          if (__real__ x > t)
@@ -96,7 +96,7 @@ ctanhq (__complex128 x)
       else
        {
          __float128 sinhrx, coshrx;
-         if (fabsq (__real__ x) > FLT128_MIN)
+         if (__builtin_fabsq (__real__ x) > FLT128_MIN)
            {
              sinhrx = sinhq (__real__ x);
              coshrx = coshq (__real__ x);
@@ -107,7 +107,7 @@ ctanhq (__complex128 x)
              coshrx = 1.0Q;
            }
 
-         if (fabsq (sinhrx) > fabsq (cosix) * FLT128_EPSILON)
+         if (__builtin_fabsq (sinhrx) > __builtin_fabsq (cosix) * 
FLT128_EPSILON)
            den = sinhrx * sinhrx + cosix * cosix;
          else
            den = cosix * cosix;
Index: math/ctanq.c
===================================================================
--- math/ctanq.c        (revision 237340)
+++ math/ctanq.c        (working copy)
@@ -33,8 +33,8 @@ ctanq (__complex128 x)
     {
       if (__quadmath_isinf_nsq (__imag__ x))
        {
-         __real__ res = copysignq (0.0Q, __real__ x);
-         __imag__ res = copysignq (1.0Q, __imag__ x);
+         __real__ res = __builtin_copysignq (0.0Q, __real__ x);
+         __imag__ res = __builtin_copysignq (1.0Q, __imag__ x);
        }
       else if (__real__ x == 0.0Q)
        {
@@ -42,8 +42,8 @@ ctanq (__complex128 x)
        }
       else
        {
-         __real__ res = nanq ("");
-         __imag__ res = nanq ("");
+         __real__ res = __builtin_nanq ("");
+         __imag__ res = __builtin_nanq ("");
 
 #ifdef HAVE_FENV_H
          if (__quadmath_isinf_nsq (__real__ x))
@@ -71,7 +71,7 @@ ctanq (__complex128 x)
          cosrx = 1.0Q;
        }
 
-      if (fabsq (__imag__ x) > t)
+      if (__builtin_fabsq (__imag__ x) > t)
        {
          /* Avoid intermediate overflow when the real part of the
             result may be subnormal.  Ignoring negligible terms, the
@@ -79,9 +79,9 @@ ctanq (__complex128 x)
             sin(x)*cos(x)/sinh(y)^2 = 4*sin(x)*cos(x)/exp(2y).  */
          __float128 exp_2t = expq (2 * t);
 
-         __imag__ res = copysignq (1.0Q, __imag__ x);
+         __imag__ res = __builtin_copysignq (1.0Q, __imag__ x);
          __real__ res = 4 * sinrx * cosrx;
-         __imag__ x = fabsq (__imag__ x);
+         __imag__ x = __builtin_fabsq (__imag__ x);
          __imag__ x -= t;
          __real__ res /= exp_2t;
          if (__imag__ x > t)
@@ -96,7 +96,7 @@ ctanq (__complex128 x)
       else
        {
          __float128 sinhix, coshix;
-         if (fabsq (__imag__ x) > FLT128_MIN)
+         if (__builtin_fabsq (__imag__ x) > FLT128_MIN)
            {
              sinhix = sinhq (__imag__ x);
              coshix = coshq (__imag__ x);
@@ -107,7 +107,7 @@ ctanq (__complex128 x)
              coshix = 1.0Q;
            }
 
-         if (fabsq (sinhix) > fabsq (cosrx) * FLT128_EPSILON)
+         if (__builtin_fabsq (sinhix) > __builtin_fabsq (cosrx) * 
FLT128_EPSILON)
            den = cosrx * cosrx + sinhix * sinhix;
          else
            den = cosrx * cosrx;
Index: math/erfq.c
===================================================================
--- math/erfq.c (revision 237340)
+++ math/erfq.c (working copy)
@@ -884,7 +884,7 @@ erfcq (__float128 x)
       if ((ix >= 0x40022000) && (sign & 0x80000000))
        return two - tiny;
 
-      x = fabsq (x);
+      x = __builtin_fabsq (x);
       z = one / (x * x);
       i = 8.0 / x;
       switch (i)
Index: math/j0q.c
===================================================================
--- math/j0q.c  (revision 237340)
+++ math/j0q.c  (working copy)
@@ -688,7 +688,7 @@ j0q (__float128 x)
   if (x == 0.0Q)
     return 1.0Q;
 
-  xx = fabsq (x);
+  xx = __builtin_fabsq (x);
   if (xx <= 2.0Q)
     {
       /* 0 <= x <= 2 */
@@ -829,7 +829,7 @@ y0q (__float128 x)
        return (zero / (zero * x));
       return -HUGE_VALQ + x;
     }
-  xx = fabsq (x);
+  xx = __builtin_fabsq (x);
   if (xx <= 0x1p-57)
     return U0 + TWOOPI * logq (x);
   if (xx <= 2.0Q)
Index: math/j1q.c
===================================================================
--- math/j1q.c  (revision 237340)
+++ math/j1q.c  (working copy)
@@ -693,7 +693,7 @@ j1q (__float128 x)
     }
   if (x == 0.0Q)
     return x;
-  xx = fabsq (x);
+  xx = __builtin_fabsq (x);
   if (xx <= 2.0Q)
     {
       /* 0 <= x <= 2 */
@@ -835,7 +835,7 @@ y1q (__float128 x)
        return (zero / (zero * x));
       return -HUGE_VALQ + x;
     }
-  xx = fabsq (x);
+  xx = __builtin_fabsq (x);
   if (xx <= 0x1p-114)
     return -TWOOPI / x;
   if (xx <= 2.0Q)
Index: math/jnq.c
===================================================================
--- math/jnq.c  (revision 237340)
+++ math/jnq.c  (working copy)
@@ -102,7 +102,7 @@ jnq (int n, __float128 x)
   if (n == 1)
     return (j1q (x));
   sgn = (n & 1) & (se >> 31);  /* even n -- 0, odd n -- sign(x) */
-  x = fabsq (x);
+  x = __builtin_fabsq (x);
 
   if (x == 0.0Q || ix >= 0x7fff0000)   /* if x is 0 or inf */
     b = zero;
@@ -243,7 +243,7 @@ jnq (int n, __float128 x)
           */
          tmp = n;
          v = two / x;
-         tmp = tmp * logq (fabsq (v * tmp));
+         tmp = tmp * logq (__builtin_fabsq (v * tmp));
 
          if (tmp < 1.1356523406294143949491931077970765006170e+04Q)
            {
@@ -280,7 +280,7 @@ jnq (int n, __float128 x)
           */
          z = j0q (x);
          w = j1q (x);
-         if (fabsq (z) >= fabsq (w))
+         if (__builtin_fabsq (z) >= __builtin_fabsq (w))
            b = (t * z / b);
          else
            b = (t * w / a);
Index: math/logbq.c
===================================================================
--- math/logbq.c        (revision 237340)
+++ math/logbq.c        (working copy)
@@ -29,7 +29,7 @@ logbq (__float128 x)
   GET_FLT128_WORDS64 (hx, lx, x);
   hx &= 0x7fffffffffffffffLL;  /* high |x| */
   if ((hx | lx) == 0)
-    return -1.0 / fabsq (x);
+    return -1.0 / __builtin_fabsq (x);
   if (hx >= 0x7fff000000000000LL)
     return x * x;
   if ((ex = hx >> 48) == 0)    /* IEEE 754 logb */
Index: math/powq.c
===================================================================
--- math/powq.c (revision 237340)
+++ math/powq.c (working copy)
@@ -235,7 +235,7 @@ powq (__float128 x, __float128 y)
        }
     }
 
-  ax = fabsq (x);
+  ax = __builtin_fabsq (x);
   /* special value of x */
   if ((p.words32.w1 | p.words32.w2 | p.words32.w3) == 0)
     {
Index: math/remainderq.c
===================================================================
--- math/remainderq.c   (revision 237340)
+++ math/remainderq.c   (working copy)
@@ -47,8 +47,8 @@ remainderq (__float128 x, __float128 p)
 
   if (hp<=0x7ffdffffffffffffLL) x = fmodq (x,p+p);     /* now x < 2p */
   if (((hx-hp)|(lx-lp))==0) return zero*x;
-  x  = fabsq(x);
-  p  = fabsq(p);
+  x  = __builtin_fabsq(x);
+  p  = __builtin_fabsq(p);
   if (hp<0x0002000000000000LL) {
       if(x+x>p) {
          x-=p;
Index: math/remquoq.c
===================================================================
--- math/remquoq.c      (revision 237340)
+++ math/remquoq.c      (working copy)
@@ -56,8 +56,8 @@ remquoq (__float128 x, __float128 y, int *quo)
       return zero * x;
     }
 
-  x  = fabsq (x);
-  y  = fabsq (y);
+  x  = __builtin_fabsq (x);
+  y  = __builtin_fabsq (y);
   cquo = 0;
 
   if (x >= 4 * y)
Index: math/scalblnq.c
===================================================================
--- math/scalblnq.c     (revision 237340)
+++ math/scalblnq.c     (working copy)
@@ -41,9 +41,9 @@ scalblnq (__float128 x, long int n)
            k = ((hx>>48)&0x7fff) - 114;
        }
         if (k==0x7fff) return x+x;             /* NaN or Inf */
-       if (n< -50000) return tiny*copysignq(tiny,x); /*underflow*/
+       if (n< -50000) return tiny*__builtin_copysignq(tiny,x); /*underflow*/
         if (n> 50000 || k+n > 0x7ffe)
-         return huge*copysignq(huge,x); /* overflow  */
+         return huge*__builtin_copysignq(huge,x); /* overflow  */
        /* Now k and n are bounded we know that k = k+n does not
           overflow.  */
         k = k+n;
@@ -50,7 +50,7 @@ scalblnq (__float128 x, long int n)
         if (k > 0)                             /* normal result */
            {SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
         if (k <= -114)
-         return tiny*copysignq(tiny,x);        /*underflow*/
+         return tiny*__builtin_copysignq(tiny,x);      /*underflow*/
         k += 114;                              /* subnormal result */
        SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
         return x*twom114;
Index: math/scalbnq.c
===================================================================
--- math/scalbnq.c      (revision 237340)
+++ math/scalbnq.c      (working copy)
@@ -42,9 +42,9 @@ scalbnq (__float128 x, int n)
            k = ((hx>>48)&0x7fff) - 114;
        }
         if (k==0x7fff) return x+x;             /* NaN or Inf */
-       if (n< -50000) return tiny*copysignq(tiny,x); /*underflow*/
+       if (n< -50000) return tiny*__builtin_copysignq(tiny,x); /*underflow*/
         if (n> 50000 || k+n > 0x7ffe)
-         return huge*copysignq(huge,x); /* overflow  */
+         return huge*__builtin_copysignq(huge,x); /* overflow  */
        /* Now k and n are bounded we know that k = k+n does not
           overflow.  */
         k = k+n;
@@ -51,7 +51,7 @@ scalbnq (__float128 x, int n)
         if (k > 0)                             /* normal result */
            {SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
         if (k <= -114)
-         return tiny*copysignq(tiny,x);        /*underflow*/
+         return tiny*__builtin_copysignq(tiny,x);      /*underflow*/
         k += 114;                              /* subnormal result */
        SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
         return x*twom114;
Index: math/sinq_kernel.c
===================================================================
--- math/sinq_kernel.c  (revision 237340)
+++ math/sinq_kernel.c  (working copy)
@@ -105,7 +105,7 @@ __quadmath_kernel_sinq (__float128 x, __float128 y
         sinq(h+l) = sinq(h)cosq(l) + cosq(h)sinq(l).  */
       index = 0x3ffe - (tix >> 16);
       hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
-      x = fabsq (x);
+      x = __builtin_fabsq (x);
       switch (index)
        {
        case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
Index: math/tanq.c
===================================================================
--- math/tanq.c (revision 237340)
+++ math/tanq.c (working copy)
@@ -98,7 +98,7 @@ __quadmath_kernel_tanq (__float128 x, __float128 y
        {                       /* generate inexact */
          if ((ix | u.words32.w1 | u.words32.w2 | u.words32.w3
               | (iy + 1)) == 0)
-           return one / fabsq (x);
+           return one / __builtin_fabsq (x);
          else
            return (iy == 1) ? x : -one / x;
        }
Index: math/x2y2m1q.c
===================================================================
--- math/x2y2m1q.c      (revision 237340)
+++ math/x2y2m1q.c      (working copy)
@@ -49,8 +49,8 @@ mul_split (__float128 *hi, __float128 *lo, __float
 static int
 compare (const void *p, const void *q)
 {
-  __float128 pld = fabsq (*(const __float128 *) p);
-  __float128 qld = fabsq (*(const __float128 *) q);
+  __float128 pld = __builtin_fabsq (*(const __float128 *) p);
+  __float128 qld = __builtin_fabsq (*(const __float128 *) q);
   if (pld < qld)
     return -1;
   else if (pld == qld)

Reply via email to