1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

- Remove the previous check which broke coalescer-commute3.ll

- For now, conservatively ignore copy MI whose source is a physical register. Commuting its def MI can cause a physical register live interval to be live through a loop (since we know it's live coming into the def MI).

llvm-svn: 47281
This commit is contained in:
Evan Cheng 2008-02-18 18:56:31 +00:00
parent 79ecc053ca
commit 03fd8ea753

View File

@ -247,11 +247,11 @@ bool SimpleRegisterCoalescing::RemoveCopyByCommutingDef(LiveInterval &IntA,
unsigned CopyIdx = li_->getDefIndex(li_->getInstructionIndex(CopyMI));
// FIXME: For now, only eliminate the copy by commuting its def is the source
// does not live pass the move. Coalescing those copies may end up may simply
// end up swapping a live interval for another. That and because usually only
// the non-two address operand can be folded can end up pessimizing the code.
if (CopyMI->findRegisterUseOperandIdx(IntA.reg, true) != -1)
// FIXME: For now, only eliminate the copy by commuting its def when the
// source register is a virtual register. We want to guard against cases
// where the copy is a back edge copy and commuting the def lengthen the
// live interval of the source register to the entire loop.
if (TargetRegisterInfo::isPhysicalRegister(IntA.reg))
return false;
// BValNo is a value number in B that is defined by a copy from A. 'B3' in