]> granicus.if.org Git - llvm/commit
[LiveRange] Reset the VNIs when splitting subranges
authorQuentin Colombet <quentin.colombet@gmail.com>
Tue, 26 Mar 2019 21:27:15 +0000 (21:27 +0000)
committerQuentin Colombet <quentin.colombet@gmail.com>
Tue, 26 Mar 2019 21:27:15 +0000 (21:27 +0000)
commit7fce37e34d055f61658971a8d4e53d9e602d9d20
treed9e4a0a70ae62371c7b1871d34654975b7bd6f67
parentbe69330b8e7d048a0c127247cb70c6906a74e661
[LiveRange] Reset the VNIs when splitting subranges

When splitting a subrange we end up with two different subranges covering
two different, non overlapping, lanes.
As part of this splitting the VNIs of the original live-range need
to be dispatched to the subranges according to which lanes they are
actually defining.

Prior to this patch we were assuming that all values were defining
all lanes. This was wrong as demonstrated by llvm.org/PR40835.

Differential Revision: https://reviews.llvm.org/D59731

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357032 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/LiveInterval.h
lib/CodeGen/LiveInterval.cpp
lib/CodeGen/LiveRangeCalc.cpp
lib/CodeGen/RegisterCoalescer.cpp
lib/CodeGen/SplitKit.cpp
test/CodeGen/SystemZ/regcoal-subranges-update.mir [new file with mode: 0644]