https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115701
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- So the main reason for the loss of PTA is that we rewrite 'e' into SSA form only after CCP2 which does the PHI insertion we later attempt to copy to. forwprop then does <bb 3> [local count: 1073741824]: - # e_18 = PHI <e_19(2), e_20(4)> + # e_18 = PHI <&a(2), &d(4)> c.0_1 = c; if (c.0_1 != 0) goto <bb 4>; [50.00%] else goto <bb 5>; [50.00%] - <bb 4> [local count: 1014686024]: - # PT = null { D.2772 D.2774 } (nonlocal) - e.1_2 = e_18; - *g_14(D) = e.1_2; + <bb 4> [local count: 536870912]: + *g_14(D) = e_18; and not having the copy-from-dest trick of preserving flow-info. Of course restricting that to same-bb handling will not make a difference here. Still the trigger is FRE making *g_14(D) = e_18; # PT = null _4 = *g_14(D); a SSA copy and thus invoking the mechanism on _4 = e_18. The issue is latent because we also are so conservative with this and only copy info when there's none present on the RHS rather than intersecting the info.