/* PR middle-end/43374 */
/* { dg-do run } */
/* { dg-options "-O2" } */

__attribute__((noipa)) int
foo (_Decimal32 x)
{
  return __builtin_isinf (x);
}

__attribute__((noipa)) int
bar (_Decimal64 x)
{
  return __builtin_isfinite (x);
}

__attribute__((noipa)) int
baz (_Decimal128 x)
{
  return __builtin_isnormal (x);
}

int
main ()
{
  if (!foo (__builtin_infd32 ())
      || !foo (-__builtin_infd32 ())
      || foo (__builtin_nand32 (""))
      || foo (9.999999E96DF)
      || foo (-1E-95DF)
      || foo (0.999999E-95DF)
      || foo (-0.000001E-95DF)
      || foo (0.000DF)
      || foo (-0.00000DF))
    __builtin_abort ();
  if (bar (__builtin_infd64 ())
      || bar (-__builtin_infd64 ())
      || bar (__builtin_nand64 (""))
      || !bar (9.999999999999999E384DD)
      || !bar (-1E-383DD)
      || !bar (0.999999999999999E-383DD)
      || !bar (-0.000000000000001E-383DD)
      || !bar (0.000DD)
      || !bar (-0.0000000000DD))
    __builtin_abort ();
  if (baz (__builtin_infd128 ())
      || baz (-__builtin_infd128 ())
      || baz (__builtin_nand128 (""))
      || !baz (9.999999999999999999999999999999999E6144DL)
      || !baz (-1E-6143DL)
      || baz (0.999999999999999999999999999999999E-6143DL)
      || baz (-0.000000000000000000000000000000001E-6143DL)
      || baz (0.000DL)
      || baz (-0.0000000000000000000000DL))
    __builtin_abort ();
}
