/* This used to ICE due to a reload bug on s390*.  */

/* { dg-do compile } */
/* { dg-options "-O2" } */

int f (unsigned int);
void g (void *);

void test (void *p, void *dummy)
{
  unsigned int flags = 0;

  if (dummy)
    g (dummy);

  if (p)
    flags |= 0x80000000;

  asm volatile ("" : : : "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");

  if (dummy)
    g (dummy);

  if (p) 
    {
      flags |= 0x20000000|0x80000000;

      if (!f (0))
        flags &= ~0x80000000;
    }

  f (flags);

  if (dummy)
    g (dummy);
}

