https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101002

--- Comment #6 from Peter Bergner <bergner at gcc dot gnu.org> ---
(In reply to Peter Bergner from comment #5)
> The creation of the __ibm128 type is guarded by:
> 
>   if (TARGET_LONG_DOUBLE_128 && (!TARGET_IEEEQUAD || TARGET_FLOAT128_TYPE))
> 
> Since the __ibm128 type is independent of what long double defaults to, I
> assume the fix is to just remove the TARGET_LONG_DOUBLE_128 test giving us:
> 
>   if (!TARGET_IEEEQUAD || TARGET_FLOAT128_TYPE)

I'm going to test the following to see whether anything bad falls out:

--- a/gcc/config/rs6000/rs6000-builtin.cc
+++ b/gcc/config/rs6000/rs6000-builtin.cc
@@ -710,9 +710,9 @@ rs6000_init_builtins (void)
      For IEEE 128-bit floating point, always create the type __ieee128.  If
the
      user used -mfloat128, rs6000-c.cc will create a define from __float128 to
      __ieee128.  */
-  if (TARGET_LONG_DOUBLE_128 && (!TARGET_IEEEQUAD || TARGET_FLOAT128_TYPE))
+  if (!TARGET_IEEEQUAD || TARGET_FLOAT128_TYPE)
     {
-      if (!TARGET_IEEEQUAD)
+      if (TARGET_LONG_DOUBLE_128 && !TARGET_IEEEQUAD)
        ibm128_float_type_node = long_double_type_node;
       else
        {

Reply via email to