Commit 5c261ebc authored by Leszek Swirski's avatar Leszek Swirski Committed by V8 LUCI CQ

[maglev] Allow materialising from another reg for reg merges

If a value is expected to be in a particular register for a register
merge, allow for it to be moved there from another register, without
expecting it to be spilled.

Bug: v8:7700
Change-Id: I9ef5e77b3a744a6284f4790ec9d5a7c60739a710
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3793391Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82066}
parent 9a36053b
...@@ -1598,7 +1598,7 @@ void StraightForwardRegisterAllocator::MergeRegisterValues(ControlNode* control, ...@@ -1598,7 +1598,7 @@ void StraightForwardRegisterAllocator::MergeRegisterValues(ControlNode* control,
return; return;
} }
if (node != nullptr && !node->is_loadable()) { if (node != nullptr && !node->is_loadable() && !node->has_register()) {
// If we have a node already, but can't load it here, we must be in a // If we have a node already, but can't load it here, we must be in a
// liveness hole for it, so nuke the merge state. // liveness hole for it, so nuke the merge state.
// This can only happen for conversion nodes, as they can split and take // This can only happen for conversion nodes, as they can split and take
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment