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;
|
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
|
// Scan the vector of interfering virtual registers in this union. Assume it's
|
||||||
// quite small.
|
// quite small.
|
||||||
bool LiveIntervalUnion::Query::isSeenInterference(LiveInterval *VirtReg) const {
|
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().
|
// For comments on how to speed it up, see Query::findIntersection().
|
||||||
unsigned LiveIntervalUnion::Query::
|
unsigned LiveIntervalUnion::Query::
|
||||||
collectInterferingVRegs(unsigned MaxInterferingRegs) {
|
collectInterferingVRegs(unsigned MaxInterferingRegs) {
|
||||||
|
if (InterferingVRegs.size() >= MaxInterferingRegs)
|
||||||
|
return InterferingVRegs.size();
|
||||||
InterferenceResult IR = firstInterference();
|
InterferenceResult IR = firstInterference();
|
||||||
LiveInterval::iterator VirtRegEnd = VirtReg->end();
|
LiveInterval::iterator VirtRegEnd = VirtReg->end();
|
||||||
LiveInterval *RecentInterferingVReg = NULL;
|
LiveInterval *RecentInterferingVReg = NULL;
|
||||||
|
@ -188,7 +188,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Does this live virtual register interfere with the union?
|
// 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
|
// Count the virtual registers in this union that interfere with this
|
||||||
// query's live virtual register, up to maxInterferingRegs.
|
// query's live virtual register, up to maxInterferingRegs.
|
||||||
@ -218,17 +218,7 @@ public:
|
|||||||
|
|
||||||
// Private interface for queries
|
// Private interface for queries
|
||||||
const InterferenceResult &firstInterference();
|
const InterferenceResult &firstInterference();
|
||||||
bool nextInterference(InterferenceResult &IR) const;
|
|
||||||
void findIntersection(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