/* { dg-do run } */
/* { dg-add-options ieee } */
/* { dg-require-effective-target fenv_exceptions } */
/* { dg-skip-if "fenv" { powerpc-ibm-aix* } } */

#include <fenv.h>

int
__attribute__ ((noinline, noclone))
f1 (float a, float b)
{
  return __builtin_isless (a, b) || __builtin_isgreater (a, b);
}

int
__attribute__ ((noinline, noclone))
f2 (float a, float b)
{
  return __builtin_islessgreater (a, b);
}

int
__attribute__ ((noinline, noclone))
f3 (float a, float b)
{
  return a < b || a > b;
}

int
main (void)
{
  volatile int r;

  float nanf = __builtin_nanf ("");
  float argf = 1.0f;

  feclearexcept (FE_INVALID);

  r = f1 (nanf, argf);
  if (r != 0 || fetestexcept (FE_INVALID))
    __builtin_abort ();

  r = f2 (nanf, argf);
  if (r != 0 || fetestexcept (FE_INVALID))
    __builtin_abort ();

  r = f3 (nanf, argf);
  if (r != 0 || !fetestexcept (FE_INVALID))
    __builtin_abort ();

  return 0;
}
