mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
LoopSplitter - intended to split live intervals over loop boundaries.
Still very much under development. Comments and fixes will be forthcoming. (This commit includes some small tweaks to LiveIntervals & LoopInfo to support the splitter) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108615 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -197,6 +197,26 @@ namespace llvm {
|
||||
return indexes_->getMBBEndIdx(mbb);
|
||||
}
|
||||
|
||||
bool isLiveInToMBB(const LiveInterval &li,
|
||||
const MachineBasicBlock *mbb) const {
|
||||
return li.liveAt(getMBBStartIdx(mbb));
|
||||
}
|
||||
|
||||
LiveRange* findEnteringRange(LiveInterval &li,
|
||||
const MachineBasicBlock *mbb) {
|
||||
return li.getLiveRangeContaining(getMBBStartIdx(mbb));
|
||||
}
|
||||
|
||||
bool isLiveOutOfMBB(const LiveInterval &li,
|
||||
const MachineBasicBlock *mbb) const {
|
||||
return li.liveAt(getMBBEndIdx(mbb).getPrevSlot());
|
||||
}
|
||||
|
||||
LiveRange* findExitingRange(LiveInterval &li,
|
||||
const MachineBasicBlock *mbb) {
|
||||
return li.getLiveRangeContaining(getMBBEndIdx(mbb).getPrevSlot());
|
||||
}
|
||||
|
||||
MachineBasicBlock* getMBBFromIndex(SlotIndex index) const {
|
||||
return indexes_->getMBBFromIndex(index);
|
||||
}
|
||||
@@ -217,6 +237,10 @@ namespace llvm {
|
||||
indexes_->replaceMachineInstrInMaps(MI, NewMI);
|
||||
}
|
||||
|
||||
void InsertMBBInMaps(MachineBasicBlock *MBB) {
|
||||
indexes_->insertMBBInMaps(MBB);
|
||||
}
|
||||
|
||||
bool findLiveInMBBs(SlotIndex Start, SlotIndex End,
|
||||
SmallVectorImpl<MachineBasicBlock*> &MBBs) const {
|
||||
return indexes_->findLiveInMBBs(Start, End, MBBs);
|
||||
|
Reference in New Issue
Block a user