https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99708
--- Comment #12 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #10) > Maybe we could do this instead: > > --- a/gcc/config/rs6000/rs6000-c.cc > +++ b/gcc/config/rs6000/rs6000-c.cc > @@ -623,11 +623,13 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile) > if (TARGET_FRSQRTES) > builtin_define ("__RSQRTEF__"); > if (TARGET_FLOAT128_TYPE) > + { > builtin_define ("__FLOAT128_TYPE__"); > + if (ieee128_float_type_node) > + builtin_define ("__SIZEOF_FLOAT128__=16"); > + } > if (ibm128_float_type_node) > builtin_define ("__SIZEOF_IBM128__=16"); > - if (ieee128_float_type_node) > - builtin_define ("__SIZEOF_FLOAT128__=16"); > #ifdef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB > builtin_define ("__BUILTIN_CPU_SUPPORTS__"); > #endif But why is ieee128_float_type_node not zero then? That doesn't make much sense, so this would just be hiding problems. > It would be nice to add a test to the testsuite along the lines of: > > /* { dg-do compile } */ > #ifdef __SIZEOF_FLOAT128__ > __float128 f; > #endif Sure, if we want this to be a generic macro, that is an excellent idea. Also for the other types?