https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103079
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- VRP2: Predicate evaluates to: DON'T KNOW Matching expression match.pd:1972, gimple-match.c:819 Matching expression match.pd:1975, gimple-match.c:892 Matching expression match.pd:1982, gimple-match.c:952 Not folded Folding PHI node: d_5 = PHI <b.0_1(3), 0(4)> Queued PHI for removal. Folds to: 0 Folding statement: if (d_5 >= 0) gimple_simplified to if (1 != 0) gimple_simplified to if (1 != 0) Folded into: if (1 != 0) Is it because of the uninitilized variable causing this to be done this way? Here is a testcase which does not need an inline function but it shows that there needs to be an uninitilized variable on a path and all. int a, b = -2; int main() { int d = 0; int t; if (b) goto t1; if (t) { t1: if (!a) d = b; while (d > -1) ; } return 0; }