Description[turbofan] Do not replace actual duplicates when value numbering
The value numbering reducer has collision checks for nodes that mutated,
but kept the same hash, and are now equivalent to another node. However,
it can also accidentally hit itself, if it mutated, changed hash, but
ran over the location it was previously in.
After this patch, it checks to see if it is comparing against itself,
and skips over itself. Additionally, if this check is at the end of the
collisions, it opportunistically removes the duplicate entry and reduces
the size pressure on the list. We can do the same opportunistic clean up
if we happen to find a colliding equivalent entry, since we move it from
its original position to a new one.
Drive-by change: Ensure that the collision replacement checks types in
the same way that normal replacement does.
Committed: https://crrev.com/b7761100e367af60411e1f0cb1519d815d1959ce
Cr-Commit-Position: refs/heads/master@{#40757}
Patch Set 1 #Patch Set 2 : Fix replacement type-check #
Messages
Total messages: 22 (14 generated)
|