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

--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I see
  if (TARGET_FLOAT128_TYPE)
    {
      if (!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128)
        ibm128_float_type_node = long_double_type_node;
      else
        {
          ibm128_float_type_node = make_node (REAL_TYPE);
          TYPE_PRECISION (ibm128_float_type_node) = 128;
          SET_TYPE_MODE (ibm128_float_type_node, IFmode);
          layout_type (ibm128_float_type_node);
        }
      t = build_qualified_type (ibm128_float_type_node, TYPE_QUAL_CONST);
      ptr_ibm128_float_type_node = build_pointer_type (t);
      lang_hooks.types.register_builtin_type (ibm128_float_type_node,
                                              "__ibm128");

      if (TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128)
        ieee128_float_type_node = long_double_type_node;
      else
        ieee128_float_type_node = float128_type_node;
      t = build_qualified_type (ieee128_float_type_node, TYPE_QUAL_CONST);
      ptr_ieee128_float_type_node = build_pointer_type (t);
      lang_hooks.types.register_builtin_type (ieee128_float_type_node,
                                              "__ieee128");
    }

  else
    ieee128_float_type_node = ibm128_float_type_node = long_double_type_node;

Doesn't this mean that ieee128_float_type_node and ibm128_float_type_node is
always non-NULL?
So, maybe we shouldn't test whether those are non-NULL, but whether the name
of say ieee128_float_type_node is __ieee128 and similarly if
ibm128_float_type_node's name is __ibm128?
Though, __SIZEOF_FLOAT128__ macro talks about __float128 which is on ppc64 a
macro, so
probably it needs to be that plus whether __float128 is defined to __ieee128.

Reply via email to