Loading llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h +3 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,9 @@ namespace llvm { /// range to just the remaining uses. This method does not compute reaching /// defs for new uses, and it doesn't remove dead defs. /// Dead PHIDef values are marked as unused. void shrinkToUses(LiveInterval *li); /// New dead machine instructions are added to the dead vector. void shrinkToUses(LiveInterval *li, SmallVectorImpl<MachineInstr*> *dead = 0); // Interval removal Loading llvm/lib/CodeGen/LiveIntervalAnalysis.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading Loading @@ -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); } } } Loading Loading
llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h +3 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,9 @@ namespace llvm { /// range to just the remaining uses. This method does not compute reaching /// defs for new uses, and it doesn't remove dead defs. /// Dead PHIDef values are marked as unused. void shrinkToUses(LiveInterval *li); /// New dead machine instructions are added to the dead vector. void shrinkToUses(LiveInterval *li, SmallVectorImpl<MachineInstr*> *dead = 0); // Interval removal Loading
llvm/lib/CodeGen/LiveIntervalAnalysis.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading Loading @@ -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); } } } Loading