[regalloc] Fix issue where FindOptimalSpillingPos missed some ranges
Currently, FindOptimalSpillingPos uses GetSpillState on the loop header block when attempting to find the live range that covers the top of the loop. However, GetSpillState represents the state at the end of a block, and is not written until the allocator leaves the block. So when `pos` is within the loop header block, FindOptimalSpillingPos is incorrectly recommending a split rather than recommending a spill of the live range covering the loop top. This change implements a better search for the live range that covers the beginning of the loop. Bug: v8:10606 Change-Id: I454a009b5806d1a01ee59d6d34b9e9ef8784d294 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2274308Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Cr-Commit-Position: refs/heads/master@{#68656}
Showing
Please
register
or
sign in
to comment