On Thu, 25 Aug 2016, Nick Clifton wrote: > The cause appears to be an attempt to register a builtin type using > the float128_type_node, which is NULL for these particular targets: > > gcc/config/ia64/ia64.c:10373 > gcc/config/i386/i386.c:33347 > > Presumably float128_type_node should not be NULL, but I am not sure > how to fix this. Any suggestions ?
I think this indicates that i386 and ia64 need their own local version of float128_type_node, set up like float80_type_node (i.e. copied from the global one if that isn't NULL, otherwise set up locally) instead of using the global one unconditionally, because of the existence of i386 and ia64 targets where the TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P hook can return false for TFmode (in which case __float128 still exists, but not _Float128). Though preferable would be to fix all the targets with IX86_NO_LIBGCC_TFMODE / IX86_MAYBE_NO_LIBGCC_TFMODE / IA64_NO_LIBGCC_TFMODE so that they include the relevant support code in libgcc and so no longer need the TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P hook overridden at all. -- Joseph S. Myers jos...@codesourcery.com