summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-11-01 21:51:29 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-11-01 21:51:29 +0000
commita5d4b4ffa252bb8bb766ed59065129c2b0be0350 (patch)
tree13f9e8e6a01e8ff6383243d090bb475018f030f0 /llvm/lib/CodeGen
parent418bd53008348c22d1ac7fd8ea8e95cbf71282c9 (diff)
downloadbcm5719-llvm-a5d4b4ffa252bb8bb766ed59065129c2b0be0350.tar.gz
bcm5719-llvm-a5d4b4ffa252bb8bb766ed59065129c2b0be0350.zip
Update kill flags while rewriting instructions after splitting.
llvm-svn: 117959
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SplitKit.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SplitKit.cpp b/llvm/lib/CodeGen/SplitKit.cpp
index 5b5b602952e..f8be7d484fe 100644
--- a/llvm/lib/CodeGen/SplitKit.cpp
+++ b/llvm/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);
}
}
OpenPOWER on IntegriCloud