https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99708
--- Comment #27 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #26) > (In reply to Segher Boessenkool from comment #25) > > It is defined to __ieee128 whenever that exists, and not defined otherwise? > > Yes, the logic and control flow are byzantine. > > No, far from it. > E.g. on linux -mlong-double-128 -mabi=ieeelongdouble -mno-float128 > means that __ieee128 works, long double works too and are the same, but > __float128 doesn't. > Even worse (and the reason why I've moved it to a different function) is that > one can do > #pragma GCC target ("no-float128") > or > #pragma GCC target ("float128") > in the middle of the source. Both of those qualify as bugs themselves, in my book. Those behaviours are not useful, and make life extremely hard for both users and GCC implementors.