/* { dg-do run } */
/* { dg-require-effective-target ultrasparc_hw } */
/* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */

extern void abort (void);
extern void exit (int);

int l;

int baz (double x)
{
  return l == 0;
}

double bar (double x)
{
  return 1.0;
}

double foo (double x)
{
  if (l == -1 || baz (x)) return x;
  if (x < 0.0)
    return bar (x);
  else
    return 0.0;
}

union {
  double d;
  long long l;
} x = { l: 0x7ff8000000000000LL }, y;

int main ()
{
  unsigned int fsr = 0;
  __asm __volatile ("ld %0, %%fsr" : : "m" (fsr));
  y.d = foo (x.d);
  __asm __volatile ("st %%fsr, %0" : "=m" (fsr));
  if (x.l != y.l || (fsr & 0x3ff))
    abort ();
  exit (0);
}
