summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-09-06 18:15:15 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-09-06 18:15:15 +0000
commitf9dff0e0e4e8aa9fd99c5f069e431fe6de98c1c9 (patch)
tree14cd8be55b591b5d49e50ce1e79f378f7c9d6eb0
parent5177b3a8c48adec2acf284fcb8e00775a705a7e2 (diff)
downloadllvm-f9dff0e0e4e8aa9fd99c5f069e431fe6de98c1c9.tar.gz
llvm-f9dff0e0e4e8aa9fd99c5f069e431fe6de98c1c9.tar.bz2
llvm-f9dff0e0e4e8aa9fd99c5f069e431fe6de98c1c9.tar.xz
Clear kill flags while computing live ranges.
Kill flags are difficult to maintain, and liveness queries are better handled by live intervals. Kill flags are reinserted after register allocation by addKillFlags(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163334 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/LiveRangeCalc.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/CodeGen/LiveRangeCalc.cpp b/lib/CodeGen/LiveRangeCalc.cpp
index d828f25932..c3ff4f1b6d 100644
--- a/lib/CodeGen/LiveRangeCalc.cpp
+++ b/lib/CodeGen/LiveRangeCalc.cpp
@@ -65,7 +65,11 @@ void LiveRangeCalc::extendToUses(LiveInterval *LI, unsigned Reg) {
// Visit all operands that read Reg. This may include partial defs.
for (MachineRegisterInfo::reg_nodbg_iterator I = MRI->reg_nodbg_begin(Reg),
E = MRI->reg_nodbg_end(); I != E; ++I) {
- const MachineOperand &MO = I.getOperand();
+ MachineOperand &MO = I.getOperand();
+ // Clear all kill flags. They will be reinserted after register allocation
+ // by LiveIntervalAnalysis::addKillFlags().
+ if (MO.isUse())
+ MO.setIsKill(false);
if (!MO.readsReg())
continue;
// MI is reading Reg. We may have visited MI before if it happens to be