diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-03-07 23:29:10 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-03-07 23:29:10 +0000 |
| commit | 71c380f6c71da3b9d6d41e6aba43a28720171cf8 (patch) | |
| tree | ea29886d6852f8e9c59b02bf635ff3788453d2e4 /llvm/lib/CodeGen/LiveIntervalAnalysis.cpp | |
| parent | 6258c53e12dbf973f64acbc055312f57564bc7d8 (diff) | |
| download | bcm5719-llvm-71c380f6c71da3b9d6d41e6aba43a28720171cf8.tar.gz bcm5719-llvm-71c380f6c71da3b9d6d41e6aba43a28720171cf8.zip | |
Let shrinkToUses optionally return a list of now dead machine instructions.
llvm-svn: 127192
Diffstat (limited to 'llvm/lib/CodeGen/LiveIntervalAnalysis.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/LiveIntervalAnalysis.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp index 4dda5485488..8a2db3e1a38 100644 --- a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -746,7 +746,8 @@ LiveInterval* LiveIntervals::dupInterval(LiveInterval *li) { /// shrinkToUses - After removing some uses of a register, shrink its live /// range to just the remaining uses. This method does not compute reaching /// defs for new uses, and it doesn't remove dead defs. -void LiveIntervals::shrinkToUses(LiveInterval *li) { +void LiveIntervals::shrinkToUses(LiveInterval *li, + SmallVectorImpl<MachineInstr*> *dead) { DEBUG(dbgs() << "Shrink: " << *li << '\n'); assert(TargetRegisterInfo::isVirtualRegister(li->reg) && "Can't only shrink physical registers"); @@ -852,6 +853,10 @@ void LiveIntervals::shrinkToUses(LiveInterval *li) { MachineInstr *MI = getInstructionFromIndex(VNI->def); assert(MI && "No instruction defining live value"); MI->addRegisterDead(li->reg, tri_); + if (dead && MI->allDefsAreDead()) { + DEBUG(dbgs() << "All defs dead: " << *MI); + dead->push_back(MI); + } } } |

