diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-11-01 21:51:29 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-11-01 21:51:29 +0000 |
commit | 79cb53ce9563fff74605454560e98ea0aa4b523f (patch) | |
tree | 84e94be79239aefb08bcfc464bbd35709c45a364 /lib/CodeGen/SplitKit.cpp | |
parent | c2bf50245f86805e95d01a243e7de3641c5ab7a8 (diff) |
Update kill flags while rewriting instructions after splitting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117959 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SplitKit.cpp')
-rw-r--r-- | lib/CodeGen/SplitKit.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/CodeGen/SplitKit.cpp b/lib/CodeGen/SplitKit.cpp index 5b5b602952..f8be7d484f 100644 --- a/lib/CodeGen/SplitKit.cpp +++ b/lib/CodeGen/SplitKit.cpp @@ -822,6 +822,7 @@ void SplitEditor::rewrite(unsigned reg) { for (MachineRegisterInfo::reg_iterator RI = mri_.reg_begin(reg), RE = mri_.reg_end(); RI != RE;) { MachineOperand &MO = RI.getOperand(); + unsigned OpNum = RI.getOperandNo(); MachineInstr *MI = MO.getParent(); ++RI; if (MI->isDebugValue()) { @@ -844,6 +845,8 @@ void SplitEditor::rewrite(unsigned reg) { DEBUG(dbgs() << " rewr BB#" << MI->getParent()->getNumber() << '\t'<< Idx); assert(LI && "No register was live at use"); MO.setReg(LI->reg); + if (MO.isUse() && !MI->isRegTiedToDefOperand(OpNum)) + MO.setIsKill(LI->killedAt(Idx.getDefIndex())); DEBUG(dbgs() << '\t' << *MI); } } |