https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77283
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- I'm reasonably happy with the PHI logic so I am going to test it. It's quite on the do-more-duplicating side for memory references (just uses the virtual operand PHI to see if there are any loads/stores in the joiner). For the case of if (a) i = i + 1; else ...; j = i + 1; thus CSE opportunities on one/both paths this is something that PRE catches already. So we're not actually looking for CSE opportunities but opportunities for simplification or DCE/DSE.