mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-27 14:24:40 +00:00
Keep track of the start of MBB's in a separate map from instructions. This
is faster and is needed for future improvements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30383 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -38,6 +38,10 @@ namespace llvm {
|
||||
const TargetInstrInfo* tii_;
|
||||
LiveVariables* lv_;
|
||||
|
||||
/// MBB2IdxMap - The index of the first instruction in the specified basic
|
||||
/// block.
|
||||
std::vector<unsigned> MBB2IdxMap;
|
||||
|
||||
typedef std::map<MachineInstr*, unsigned> Mi2IndexMap;
|
||||
Mi2IndexMap mi2iMap_;
|
||||
|
||||
@ -113,6 +117,17 @@ namespace llvm {
|
||||
return I->second;
|
||||
}
|
||||
|
||||
/// getMBBStartIdx - Return the base index of the first instruction in the
|
||||
/// specified MachineBasicBlock.
|
||||
unsigned getMBBStartIdx(MachineBasicBlock *MBB) const {
|
||||
return getMBBStartIdx(MBB->getNumber());
|
||||
}
|
||||
|
||||
unsigned getMBBStartIdx(unsigned MBBNo) const {
|
||||
assert(MBBNo < MBB2IdxMap.size() && "Invalid MBB number!");
|
||||
return MBB2IdxMap[MBBNo];
|
||||
}
|
||||
|
||||
/// getInstructionIndex - returns the base index of instr
|
||||
unsigned getInstructionIndex(MachineInstr* instr) const {
|
||||
Mi2IndexMap::const_iterator it = mi2iMap_.find(instr);
|
||||
@ -128,7 +143,7 @@ namespace llvm {
|
||||
"index does not correspond to an instruction");
|
||||
return i2miMap_[index];
|
||||
}
|
||||
|
||||
|
||||
std::vector<LiveInterval*> addIntervalsForSpills(const LiveInterval& i,
|
||||
VirtRegMap& vrm,
|
||||
int slot);
|
||||
@ -155,7 +170,7 @@ namespace llvm {
|
||||
}
|
||||
}
|
||||
|
||||
/// computeIntervals - compute live intervals
|
||||
/// computeIntervals - Compute live intervals.
|
||||
void computeIntervals();
|
||||
|
||||
/// joinIntervals - join compatible live intervals
|
||||
|
Reference in New Issue
Block a user