/* { 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 *-*-* } } } */