]> gcc.gnu.org Git - gcc.git/commitdiff
PowerPC: Fix nanq functions if long double is IEEE 128-bit.
authorMichael Meissner <meissner@linux.ibm.com>
Wed, 16 Sep 2020 03:36:59 +0000 (23:36 -0400)
committerMichael Meissner <meissner@linux.ibm.com>
Wed, 16 Sep 2020 03:36:59 +0000 (23:36 -0400)
gcc/
2020-09-15  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
double is IEEE-128 map the nanq built-in functions to the long
double function, not the f128 function.

gcc/config/rs6000/rs6000-c.c

index f5982907e907dd850ef39221b6f1729a14b4911d..8f7a8eec740467042835a21d57610c284baf2eba 100644 (file)
@@ -681,15 +681,32 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile)
       builtin_define ("__builtin_vsx_xvnmsubmsp=__builtin_vsx_xvnmsubsp");
     }
 
-  /* Map the old _Float128 'q' builtins into the new 'f128' builtins.  */
+  /* Map the old _Float128 'q' builtins into the new 'f128' builtins if long
+     double is IBM or 64-bit.
+
+     However, if long double is IEEE 128-bit, map both sets of built-in
+     functions to the normal long double version.  This shows up in nansf128
+     vs. nanf128.  */
   if (TARGET_FLOAT128_TYPE)
     {
-      builtin_define ("__builtin_fabsq=__builtin_fabsf128");
-      builtin_define ("__builtin_copysignq=__builtin_copysignf128");
-      builtin_define ("__builtin_nanq=__builtin_nanf128");
-      builtin_define ("__builtin_nansq=__builtin_nansf128");
-      builtin_define ("__builtin_infq=__builtin_inff128");
-      builtin_define ("__builtin_huge_valq=__builtin_huge_valf128");
+      if (FLOAT128_IEEE_P (TFmode))
+       {
+         builtin_define ("__builtin_fabsq=__builtin_fabsl");
+         builtin_define ("__builtin_copysignq=__builtin_copysignl");
+         builtin_define ("__builtin_nanq=__builtin_nanl");
+         builtin_define ("__builtin_nansq=__builtin_nansl");
+         builtin_define ("__builtin_infq=__builtin_infl");
+         builtin_define ("__builtin_huge_valq=__builtin_huge_vall");
+       }
+      else
+       {
+         builtin_define ("__builtin_fabsq=__builtin_fabsf128");
+         builtin_define ("__builtin_copysignq=__builtin_copysignf128");
+         builtin_define ("__builtin_nanq=__builtin_nanf128");
+         builtin_define ("__builtin_nansq=__builtin_nansf128");
+         builtin_define ("__builtin_infq=__builtin_inff128");
+         builtin_define ("__builtin_huge_valq=__builtin_huge_valf128");
+       }
     }
 
   /* Tell users they can use __builtin_bswap{16,64}.  */
This page took 0.075544 seconds and 5 git commands to generate.