• Clemens Backes's avatar
    [compiler] Fix mixed same-as-input and unique registers · 10bbbf13
    Clemens Backes authored
    The mid-tier register allocator could not handle the case that the same
    virtual register was used for
    - the input corresponding to the 'same-as-input' output, and
    - another 'unique register' input.
    
    In this case, it cannot choose the already assigned register for the
    'unique' register. Instead, it needs to allocate a new register and
    introduce a gap move to duplicate the input value in two different
    registers.
    
    FYI, the instruction where the current logic failed was:
      (v5(0), v6(R)) = IA32AddPair v7(R) v7(*) v8(R) v7(R)
    (where the last input was marked 'unique').
    
    R=leszeks@chromium.org
    CC=thibaudm@chromium.org
    
    Bug: v8:12330, chromium:1272204
    Change-Id: Ie4843aa9f5e027afe503e0481a4acdfa325dfe0e
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3347821Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
    Commit-Queue: Clemens Backes <clemensb@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78411}
    10bbbf13
regress-1272204.js 660 Bytes