diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-07-09 01:27:21 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-07-09 01:27:21 +0000 |
| commit | 66b36490303566fe4e99fd8f8540e5c05e752aeb (patch) | |
| tree | f7da30396e6a526d54daa4e1ad089ac5883ba35c /llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp | |
| parent | 5165fa1c3964cd54fcc22511637c0aae8f7a4344 (diff) | |
| download | bcm5719-llvm-66b36490303566fe4e99fd8f8540e5c05e752aeb.tar.gz bcm5719-llvm-66b36490303566fe4e99fd8f8540e5c05e752aeb.zip | |
Fix broken isCopy handling in TrimLiveIntervalToLastUse.
llvm-svn: 107950
Diffstat (limited to 'llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp index 551866ee76a..2e7e6f8b158 100644 --- a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp +++ b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp @@ -618,10 +618,14 @@ SimpleRegisterCoalescing::TrimLiveIntervalToLastUse(SlotIndex CopyIdx, // of last use. LastUse->setIsKill(); removeRange(li, LastUseIdx.getDefIndex(), LR->end, li_, tri_); + if (LastUseMI->isCopy()) { + MachineOperand &DefMO = LastUseMI->getOperand(0); + if (DefMO.getReg() == li.reg && !DefMO.getSubReg()) + DefMO.setIsDead(); + } unsigned SrcReg, DstReg, SrcSubIdx, DstSubIdx; - if ((LastUseMI->isCopy() && !LastUseMI->getOperand(0).getSubReg()) || - (tii_->isMoveInstr(*LastUseMI, SrcReg, DstReg, SrcSubIdx, DstSubIdx) && - DstReg == li.reg && DstSubIdx == 0)) { + if (tii_->isMoveInstr(*LastUseMI, SrcReg, DstReg, SrcSubIdx, DstSubIdx) && + DstReg == li.reg && DstSubIdx == 0) { // Last use is itself an identity code. int DeadIdx = LastUseMI->findRegisterDefOperandIdx(li.reg, false, false, tri_); |

