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)
+ return false;
+
// BValNo is a value number in B that is defined by a copy from A. 'B3' in
// the example above.
LiveInterval::iterator BLR = IntB.FindLiveRangeContaining(CopyIdx);