/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-uncprop-details -w" } */

/* We're looking for a constant argument a PHI node.  There
   should only be one if we unpropagate correctly.  */
/* { dg-final { scan-tree-dump-times "<1\|, 1" 1 "uncprop1"} } */

typedef long unsigned int size_t;
typedef union gimple_statement_d *gimple;
int end_imm_use_stmt_p (void);
void next_imm_use_stmt (void);
int arf (void);
int boo (void);
void update_stmt (void);
unsigned char
propagate_with_phi ()
{
  gimple use_stmt;
  unsigned char phi_inserted;
  phi_inserted = 0;
  for (; !end_imm_use_stmt_p (); next_imm_use_stmt ())
    {
      if (!(arf () == 10 && boo () == 20))
        continue;
      if (!phi_inserted)
        phi_inserted = 1;
      else
        update_stmt ();
    }
}

