mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Remove more dead code.
collectInterferingVRegs will be the primary function for interference checks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137354 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7b8f46cf9e
commit
9942ba9c0e
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user