forked from OSchip/llvm-project
Delete dead code.
Local live range splitting is better driven by interference. This code was just guessing. llvm-svn: 126799
This commit is contained in:
parent
ff07178789
commit
977e3d3c48
|
@ -973,72 +973,3 @@ void SplitEditor::splitSingleBlocks(const SplitAnalysis::BlockPtrSet &Blocks) {
|
|||
}
|
||||
finish();
|
||||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Sub Block Splitting
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
/// getBlockForInsideSplit - If CurLI is contained inside a single basic block,
|
||||
/// and it wou pay to subdivide the interval inside that block, return it.
|
||||
/// Otherwise return NULL. The returned block can be passed to
|
||||
/// SplitEditor::splitInsideBlock.
|
||||
const MachineBasicBlock *SplitAnalysis::getBlockForInsideSplit() {
|
||||
// The interval must be exclusive to one block.
|
||||
if (UsingBlocks.size() != 1)
|
||||
return 0;
|
||||
// Don't to this for less than 4 instructions. We want to be sure that
|
||||
// splitting actually reduces the instruction count per interval.
|
||||
if (UsingInstrs.size() < 4)
|
||||
return 0;
|
||||
return UsingBlocks.begin()->first;
|
||||
}
|
||||
|
||||
/// splitInsideBlock - Split CurLI into multiple intervals inside MBB.
|
||||
void SplitEditor::splitInsideBlock(const MachineBasicBlock *MBB) {
|
||||
SmallVector<SlotIndex, 32> Uses;
|
||||
Uses.reserve(SA.UsingInstrs.size());
|
||||
for (SplitAnalysis::InstrPtrSet::const_iterator I = SA.UsingInstrs.begin(),
|
||||
E = SA.UsingInstrs.end(); I != E; ++I)
|
||||
if ((*I)->getParent() == MBB)
|
||||
Uses.push_back(LIS.getInstructionIndex(*I));
|
||||
DEBUG(dbgs() << " splitInsideBlock BB#" << MBB->getNumber() << " for "
|
||||
<< Uses.size() << " instructions.\n");
|
||||
assert(Uses.size() >= 3 && "Need at least 3 instructions");
|
||||
array_pod_sort(Uses.begin(), Uses.end());
|
||||
|
||||
// Simple algorithm: Find the largest gap between uses as determined by slot
|
||||
// indices. Create new intervals for instructions before the gap and after the
|
||||
// gap.
|
||||
unsigned bestPos = 0;
|
||||
int bestGap = 0;
|
||||
DEBUG(dbgs() << " dist (" << Uses[0]);
|
||||
for (unsigned i = 1, e = Uses.size(); i != e; ++i) {
|
||||
int g = Uses[i-1].distance(Uses[i]);
|
||||
DEBUG(dbgs() << ") -" << g << "- (" << Uses[i]);
|
||||
if (g > bestGap)
|
||||
bestPos = i, bestGap = g;
|
||||
}
|
||||
DEBUG(dbgs() << "), best: -" << bestGap << "-\n");
|
||||
|
||||
// bestPos points to the first use after the best gap.
|
||||
assert(bestPos > 0 && "Invalid gap");
|
||||
|
||||
// FIXME: Don't create intervals for low densities.
|
||||
|
||||
// First interval before the gap. Don't create single-instr intervals.
|
||||
if (bestPos > 1) {
|
||||
openIntv();
|
||||
useIntv(enterIntvBefore(Uses.front()), leaveIntvAfter(Uses[bestPos-1]));
|
||||
closeIntv();
|
||||
}
|
||||
|
||||
// Second interval after the gap.
|
||||
if (bestPos < Uses.size()-1) {
|
||||
openIntv();
|
||||
useIntv(enterIntvBefore(Uses[bestPos]), leaveIntvAfter(Uses.back()));
|
||||
closeIntv();
|
||||
}
|
||||
|
||||
finish();
|
||||
}
|
||||
|
|
|
@ -141,12 +141,6 @@ public:
|
|||
/// having CurLI split to a new live interval. Return true if Blocks can be
|
||||
/// passed to SplitEditor::splitSingleBlocks.
|
||||
bool getMultiUseBlocks(BlockPtrSet &Blocks);
|
||||
|
||||
/// getBlockForInsideSplit - If CurLI is contained inside a single basic
|
||||
/// block, and it would pay to subdivide the interval inside that block,
|
||||
/// return it. Otherwise return NULL. The returned block can be passed to
|
||||
/// SplitEditor::splitInsideBlock.
|
||||
const MachineBasicBlock *getBlockForInsideSplit();
|
||||
};
|
||||
|
||||
|
||||
|
@ -385,9 +379,6 @@ public:
|
|||
/// splitSingleBlocks - Split CurLI into a separate live interval inside each
|
||||
/// basic block in Blocks.
|
||||
void splitSingleBlocks(const SplitAnalysis::BlockPtrSet &Blocks);
|
||||
|
||||
/// splitInsideBlock - Split CurLI into multiple intervals inside MBB.
|
||||
void splitInsideBlock(const MachineBasicBlock *);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue