/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-evrp -fno-tree-fre -fdisable-tree-ethread" } */

void kill(void);

void foo (int x, int y, int z)
{
  // Establish y = [-INF, 54]
  if (y < 55)
    return;

  // Establish z == x
  if (z != x)
    return;

  // EVRP should transform this to if (0 != 0)
  if (y < 30)
    x = 0;

  // # x_1 = PHI <x_5(D)(6), 0(7)>
  // The earlier transformation should make the edge from bb7
  // unexecutable, allowing x_1 == x_5 to be registered, and
  // then fold away this condition as well.
  if (x != z)
    kill();

}
/* { dg-final { scan-tree-dump-not "kill" "evrp" { xfail *-*-* } } } */