Remove more dead code.

collectInterferingVRegs will be the primary function for interference
checks.

llvm-svn: 137354
This commit is contained in:
Jakob Stoklund Olesen 2011-08-11 21:18:34 +00:00
parent d886f8cd8d
commit da4f0eb12c
2 changed files with 3 additions and 37 deletions

View File

@ -181,32 +181,6 @@ LiveIntervalUnion::Query::firstInterference() {
return FirstInterference;
}
// Treat the result as an iterator and advance to the next interfering pair
// of segments. This is a plain iterator with no filter.
bool LiveIntervalUnion::Query::nextInterference(InterferenceResult &IR) const {
assert(isInterference(IR) && "iteration past end of interferences");
// Advance either the VirtReg or LiveUnion segment to ensure that we visit all
// unique overlapping pairs.
if (IR.VirtRegI->end < IR.LiveUnionI.stop()) {
if (++IR.VirtRegI == VirtReg->end())
return false;
}
else {
if (!(++IR.LiveUnionI).valid()) {
IR.VirtRegI = VirtReg->end();
return false;
}
}
// Short-circuit findIntersection() if possible.
if (overlap(*IR.VirtRegI, IR.LiveUnionI))
return true;
// Find the next intersection.
findIntersection(IR);
return isInterference(IR);
}
// Scan the vector of interfering virtual registers in this union. Assume it's
// quite small.
bool LiveIntervalUnion::Query::isSeenInterference(LiveInterval *VirtReg) const {
@ -226,6 +200,8 @@ bool LiveIntervalUnion::Query::isSeenInterference(LiveInterval *VirtReg) const {
// For comments on how to speed it up, see Query::findIntersection().
unsigned LiveIntervalUnion::Query::
collectInterferingVRegs(unsigned MaxInterferingRegs) {
if (InterferingVRegs.size() >= MaxInterferingRegs)
return InterferingVRegs.size();
InterferenceResult IR = firstInterference();
LiveInterval::iterator VirtRegEnd = VirtReg->end();
LiveInterval *RecentInterferingVReg = NULL;

View File

@ -188,7 +188,7 @@ public:
}
// Does this live virtual register interfere with the union?
bool checkInterference() { return isInterference(firstInterference()); }
bool checkInterference() { return collectInterferingVRegs(1); }
// Count the virtual registers in this union that interfere with this
// query's live virtual register, up to maxInterferingRegs.
@ -218,17 +218,7 @@ public:
// Private interface for queries
const InterferenceResult &firstInterference();
bool nextInterference(InterferenceResult &IR) const;
void findIntersection(InterferenceResult &IR) const;
bool isInterference(const InterferenceResult &IR) const {
if (IR.VirtRegI != VirtReg->end()) {
assert(overlap(*IR.VirtRegI, IR.LiveUnionI) &&
"invalid segment iterators");
return true;
}
return false;
}
};
};