LLVM API Documentation
#include <SplitKit.h>
SplitAnalysis - Analyze a LiveInterval, looking for live range splitting opportunities.
Definition at line 42 of file SplitKit.h.
typedef SmallPtrSet<const MachineBasicBlock*, 16> llvm::SplitAnalysis::BlockPtrSet |
Definition at line 186 of file SplitKit.h.
SplitAnalysis::SplitAnalysis | ( | const VirtRegMap & | vrm, |
const LiveIntervals & | lis, | ||
const MachineLoopInfo & | mli | ||
) |
Definition at line 43 of file SplitKit.cpp.
void SplitAnalysis::analyze | ( | const LiveInterval * | li | ) |
analyze - set CurLI to the specified interval, and analyze how it may be split.
Definition at line 307 of file SplitKit.cpp.
References clear().
void SplitAnalysis::clear | ( | ) |
clear - clear all data structures so SplitAnalysis is ready to analyze a new interval.
Definition at line 49 of file SplitKit.cpp.
References llvm::BitVector::clear(), and llvm::SmallVectorImpl< T >::clear().
Referenced by analyze().
unsigned SplitAnalysis::countLiveBlocks | ( | const LiveInterval * | li | ) | const |
countLiveBlocks - Return the number of blocks where li is live. This is guaranteed to return the same number as getNumLiveBlocks() after calling analyze(li).
Definition at line 270 of file SplitKit.cpp.
References llvm::LiveRange::advanceTo(), llvm::LiveRange::begin(), llvm::LiveRange::empty(), llvm::LiveRange::end(), llvm::LiveIntervals::getMBBEndIdx(), llvm::LiveIntervals::getMBBFromIndex(), and LIS.
bool llvm::SplitAnalysis::didRepairRange | ( | ) | const [inline] |
didRepairRange() - Returns true if CurLI was invalid and has been repaired by analyze(). This really shouldn't happen, but sometimes the coalescer can create live ranges that end in mid-air.
Definition at line 130 of file SplitKit.h.
SlotIndex llvm::SplitAnalysis::getLastSplitPoint | ( | unsigned | Num | ) | [inline] |
getLastSplitPoint - Return the base index of the last valid split point in the basic block numbered Num.
Definition at line 141 of file SplitKit.h.
Referenced by getLastSplitPointIter(), llvm::SplitEditor::splitLiveThroughBlock(), llvm::SplitEditor::splitRegInBlock(), llvm::SplitEditor::splitRegOutBlock(), and llvm::SplitEditor::splitSingleBlock().
getLastSplitPointIter - Returns the last split point as an iterator.
Definition at line 110 of file SplitKit.cpp.
References llvm::MachineBasicBlock::end(), llvm::LiveIntervals::getInstructionFromIndex(), getLastSplitPoint(), llvm::LiveIntervals::getMBBEndIdx(), llvm::MachineBasicBlock::getNumber(), and LIS.
Referenced by llvm::SplitEditor::enterIntvAtEnd().
unsigned llvm::SplitAnalysis::getNumLiveBlocks | ( | ) | const [inline] |
getNumLiveBlocks - Return the number of blocks where CurLI is live.
Definition at line 177 of file SplitKit.h.
References getNumThroughBlocks(), and getUseBlocks().
unsigned llvm::SplitAnalysis::getNumThroughBlocks | ( | ) | const [inline] |
getNumThroughBlocks - Return the number of through blocks.
Definition at line 168 of file SplitKit.h.
Referenced by getNumLiveBlocks().
const LiveInterval& llvm::SplitAnalysis::getParent | ( | ) | const [inline] |
getParent - Return the last analyzed interval.
Definition at line 137 of file SplitKit.h.
const BitVector& llvm::SplitAnalysis::getThroughBlocks | ( | ) | const [inline] |
getThroughBlocks - Return the set of through blocks.
Definition at line 174 of file SplitKit.h.
ArrayRef<BlockInfo> llvm::SplitAnalysis::getUseBlocks | ( | ) | const [inline] |
getUseBlocks - Return an array of BlockInfo objects for the basic blocks where CurLI has uses.
Definition at line 165 of file SplitKit.h.
Referenced by getNumLiveBlocks().
ArrayRef<SlotIndex> llvm::SplitAnalysis::getUseSlots | ( | ) | const [inline] |
getUseSlots - Return an array of SlotIndexes of instructions using CurLI. This include both use and def operands, at most one entry per instruction.
Definition at line 161 of file SplitKit.h.
bool SplitAnalysis::isOriginalEndpoint | ( | SlotIndex | Idx | ) | const |
isOriginalEndpoint - Return true if the original live range was killed or (re-)defined at Idx. Idx should be the 'def' slot for a normal kill/def, and 'use' for an early-clobber def. This can be used to recognize code inserted by earlier live range splitting.
Definition at line 293 of file SplitKit.cpp.
References llvm::LiveRange::begin(), llvm::LiveRange::empty(), llvm::sys::path::end(), llvm::LiveRange::end(), llvm::LiveRange::find(), llvm::LiveIntervals::getInterval(), llvm::VirtRegMap::getOriginal(), I, LIS, llvm::LiveInterval::reg, and VRM.
Referenced by shouldSplitSingleBlock().
bool llvm::SplitAnalysis::isThroughBlock | ( | unsigned | MBB | ) | const [inline] |
isThroughBlock - Return true if CurLI is live through MBB without uses.
Definition at line 171 of file SplitKit.h.
References llvm::BitVector::test().
bool SplitAnalysis::shouldSplitSingleBlock | ( | const BlockInfo & | BI, |
bool | SingleInstrs | ||
) | const |
shouldSplitSingleBlock - Returns true if it would help to create a local live range for the instructions in BI. There is normally no benefit to creating a live range for a single instruction, but it does enable register class inflation if the instruction has a restricted register class.
BI | The block to be isolated. |
SingleInstrs | True when single instructions should be isolated. |
Definition at line 1129 of file SplitKit.cpp.
References llvm::SplitAnalysis::BlockInfo::FirstInstr, llvm::LiveIntervals::getInstructionFromIndex(), llvm::MachineInstr::isCopyLike(), llvm::SplitAnalysis::BlockInfo::isOneInstr(), isOriginalEndpoint(), LIS, llvm::SplitAnalysis::BlockInfo::LiveIn, and llvm::SplitAnalysis::BlockInfo::LiveOut.
Definition at line 46 of file SplitKit.h.
Referenced by countLiveBlocks(), getLastSplitPointIter(), isOriginalEndpoint(), and shouldSplitSingleBlock().
Definition at line 47 of file SplitKit.h.
Referenced by llvm::SplitEditor::finish().
Definition at line 44 of file SplitKit.h.
Definition at line 48 of file SplitKit.h.
Definition at line 45 of file SplitKit.h.
Referenced by isOriginalEndpoint().