[Webkit-unassigned] [Bug 180783] Octane/richards regressed by a whopping 20% because eliminateCommonSubexpressions has a weird fixpoint requirement
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Dec 13 16:44:18 PST 2017
https://bugs.webkit.org/show_bug.cgi?id=180783
--- Comment #2 from Filip Pizlo <fpizlo at apple.com> ---
(In reply to Filip Pizlo from comment #0)
> We accidentally introduced an extra load from arguments. That load revealed
> the fact that our B3 CSE cannot handle redundant dependent chains:
>
> BB#1:
> a: Load(@x)
> BB#2:
> c: Load(@x)
> d: Load(@c)
> BB#3:
> e: Load(@c)
>
> Then CSE will build a map at the end of BB#2 that says that loads from @c
> are serviced by @d.
>
> Then CSE will do this:
>
> BB#1:
> a: Load(@x)
> BB#2:
> c: Identity(@a)
> d: Load(@a)
> BB#3:
> e: Load(@a)
>
> But then, when we try to eliminate @e, we search for what loads service @a.
> BB#2 tells us about @c, not @a.
>
> The solution is either to fixpoint CSE or to perform substitution on the
> matches map.
It's even more subtle!
We fix that value map after processing a block. The real problem is that a load may be redundant with a load that is later in RPO because of loops. That load's map would not have been updated.
I think that the best thing to do is to fixpoint CSE.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20171214/637dce4f/attachment-0001.html>
More information about the webkit-unassigned
mailing list