https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91323
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> --- FWIW, using __float128 also traps on LTGT. The adapted testcase: --cut here-- /* { dg-do run } */ /* { dg-add-options ieee } */ /* { dg-require-effective-target fenv_exceptions } */ #include <fenv.h> int __attribute__ ((noinline, noclone)) f1 (__float128 a, __float128 b) { return __builtin_isless (a, b) || __builtin_isgreater (a, b); } int __attribute__ ((noinline, noclone)) f2 (__float128 a, __float128 b) { return __builtin_islessgreater (a, b); } int __attribute__ ((noinline, noclone)) f3 (__float128 a, __float128 b) { return a < b || a > b; } int main (void) { volatile int r; __float128 nanq = __builtin_nanq (""); __float128 argq = 1.0q; feclearexcept (FE_INVALID); r = f1 (nanq, argq); if (fetestexcept (FE_INVALID)) __builtin_abort (); r = f2 (nanq, argq); if (fetestexcept (FE_INVALID)) __builtin_abort (); r = f3 (nanq, argq); if (!fetestexcept (FE_INVALID)) __builtin_abort (); return 0; } --cut here--