summaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/LiveIntervalAnalysis.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-09-14 06:40:48 +0000
committerChris Lattner <sabre@nondot.org>2006-09-14 06:40:48 +0000
commit2540813e5d583fdc40458a53badb323ae5d83a07 (patch)
tree9c39a1b4d99a8eaf0953deb78a92ccca7491e91a /include/llvm/CodeGen/LiveIntervalAnalysis.h
parent5f1d01393c1dbafca3c5d91adbb0a97c387a5a1e (diff)
downloadllvm-2540813e5d583fdc40458a53badb323ae5d83a07.tar.gz
llvm-2540813e5d583fdc40458a53badb323ae5d83a07.tar.bz2
llvm-2540813e5d583fdc40458a53badb323ae5d83a07.tar.xz
Remove dead methods, add getNumBlockIDs() method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30322 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/LiveIntervalAnalysis.h')
-rw-r--r--include/llvm/CodeGen/LiveIntervalAnalysis.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h
index 77451846c2..2bcef48e96 100644
--- a/include/llvm/CodeGen/LiveIntervalAnalysis.h
+++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h
@@ -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,12 +170,17 @@ namespace llvm {
}
}
- /// computeIntervals - compute live intervals
- void computeIntervals();
+ /// computeIntervals - Compute live intervals. This returns a vector of all
+ /// the two-address instructions to the caller.
+ void computeIntervals(std::vector<MachineInstr*> &TwoAddrInsts);
/// joinIntervals - join compatible live intervals
void joinIntervals();
+ /// HandleTwoAddressInsts - Arrange for the specified list of 2-addr
+ /// instructions to have their src/dst regs allocated to the same register.
+ void HandleTwoAddressInsts(const std::vector<MachineInstr*> &TwoAddrInsts);
+
/// CopyCoallesceInMBB - Coallsece copies in the specified MBB, putting
/// copies that cannot yet be coallesced into the "TryAgain" list.
void CopyCoallesceInMBB(MachineBasicBlock *MBB,