https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124599
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- So it's not translate_vuse_through_block but the reference lookup from phi_translate_1 which - now with correct VUSE - does a re-lookup for the value number, allowing VN_WALK. Previously we'd have the values VUSE (the one from the VN hashtables), saving redundant walking here. It's not references that are redundant at compute_avail time. It's not references that become redundant during phi_translate_1. But it's the VN tables no longer nicely serving as cache. Re-instantiating the VN table insertion doesn't help much here since we still do quadratic work a n-step VUSE transition. We could record a "value VUSE" in the PRE expression and perform the VN lookup using the dominating of that and the expression VUSE. Or we could cheat, and revert the part of the patch that preserved the original VUSE, not taking it as part of the expression but as part of the value. That's what fixes the regression and I'm testing it.
