https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91323
--- Comment #12 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- On Thu, 1 Aug 2019, ubizjak at gmail dot com wrote: > It also means that __builtin_islessgreater is confusingly named. No, __builtin_islessgreater corresponds to the ISO C islessgreater type-generic macro, which does not raise exceptions for quiet NaN arguments. If anything is confusingly named it's GCC's internal LTGT operations, if they don't correspond to islessgreater. Regarding the confused LTGT (RTL, GENERIC, GIMPLE) semantics, see what I said in <https://gcc.gnu.org/ml/gcc-patches/2015-02/msg00583.html> (and elsewhere in that thread). Whatever we conclude about whether LTGT is (LT || GT) or (!UNEQ), (a) we should document the choice (so that we then have a basis for telling whether code involving LTGT is correct or not, based on whether it corresponds to the documented semantics) and (b) the choice should be the same for all of RTL, GENERIC and GIMPLE.