/* The pfpo instruction generated by this code clobbers the r1 register while
   it was still in use.  */

/* { dg-do run } */
/* { dg-options "-O0 -march=z10 -mzarch" } */

int foo(int x)
{
  return x;
}

int bar(int i, float f)
{
  return i;
}

int main()
{
  _Decimal32 d = 7;
  return bar(foo(0x10203040), (float)d) == 0x10203040 ? 0 : 1;
}
