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.

Reply via email to