https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106922
--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> --- So there's a similar missed optimization but it's not caused by the bisected revision. The situation is like float bar, baz; void foo (int *p, int n) { *p = 0; do { bar = 1.; if (*p) { baz = 2.; *p = 0; } } while (--n); } where we fail to realize that in the first if (*p), *p stays zero. I have a patch that fixes the above but that miscompiles genrecog.cc merge_into_decision (but no testcase in the testsuite ...).