mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-23 12:11:58 +00:00
When extending a liveinterval by commuting, don't throw away the live ranges that are not affected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52430 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8d6a58c5d5
commit
739583be56
@ -381,10 +381,21 @@ bool SimpleRegisterCoalescing::RemoveCopyByCommutingDef(LiveInterval &IntA,
|
||||
// simply extend BLR if CopyMI doesn't end the range.
|
||||
DOUT << "\nExtending: "; IntB.print(DOUT, tri_);
|
||||
|
||||
IntB.removeValNo(BValNo);
|
||||
// Remove val#'s defined by copies that will be coalesced away.
|
||||
for (unsigned i = 0, e = BDeadValNos.size(); i != e; ++i)
|
||||
IntB.removeValNo(BDeadValNos[i]);
|
||||
VNInfo *ValNo = IntB.getNextValue(AValNo->def, 0, li_->getVNInfoAllocator());
|
||||
|
||||
// Extend BValNo by merging in IntA live ranges of AValNo. Val# definition
|
||||
// is updated. Kills are also updated.
|
||||
VNInfo *ValNo = BValNo;
|
||||
ValNo->def = AValNo->def;
|
||||
ValNo->copy = NULL;
|
||||
for (unsigned j = 0, ee = ValNo->kills.size(); j != ee; ++j) {
|
||||
unsigned Kill = ValNo->kills[j];
|
||||
if (Kill != BLR->end)
|
||||
BKills.push_back(Kill);
|
||||
}
|
||||
ValNo->kills.clear();
|
||||
for (LiveInterval::iterator AI = IntA.begin(), AE = IntA.end();
|
||||
AI != AE; ++AI) {
|
||||
if (AI->valno != AValNo) continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user