/* { dg-do compile } */
/* { dg-options "-O -fdump-tree-fre1-details" } */

int test1 (int i, int j)
{
  int k;
  if (i != j)
    k = i;
  else
    k = j;
  return k;
}

int test2 (int i, int j)
{
  int k;
  if (i != j)
    k = j;
  else
    k = i;
  return k;
}

int test3 (int i, int j)
{
  int k;
  if (i == j)
    k = j;
  else
    k = i;
  return k;
}

int test4 (int i, int j)
{
  int k;
  if (i == j)
    k = i;
  else
    k = j;
  return k;
}

/* We'd expect 4 hits but since we only keep one forwarder the
   VN predication machinery cannot record something for the entry
   block since it doesn't work on edges but on their source.  */
/* { dg-final { scan-tree-dump-times "equal on edge" 2 "fre1" } } */