-
Leszek Swirski authored
Register merges participate in the same parallel gap move as phi inputs, but their allocation is not aware of the phis' existence (since the register merge allocation sees the register state _before_ phi input allocation, which is because that's what parallel move requires). This means that they might move into a register that is used by a Phi, and possibly will clobber its value. Avoid this by recording what registers phis move values into during code gen, and skipping register moves into those registers. Also DCHECK that the recorded gap moves can't clobber a target register from a previous gap move. Additionally, add printing for register merges (both in regalloc tracing and graph printing). Bug: v8:7700 Change-Id: I8bd4803a30a894c5654e33fc5657ef3fe6cf7a0b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3791062Reviewed-by: Victor Gomes <victorgomes@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#82036}
42ce9bc2