23 #ifndef LLVM_ANALYSIS_INTERVALPARTITION_H 24 #define LLVM_ANALYSIS_INTERVALPARTITION_H 44 using IntervalMapTy = std::map<BasicBlock *, Interval *>;
47 using IntervalListTy = std::vector<Interval *>;
49 std::vector<Interval *> Intervals;
81 IntervalMapTy::iterator I = IntervalMap.find(BB);
82 return I != IntervalMap.end() ? I->second :
nullptr;
91 const std::vector<Interval*> &
getIntervals()
const {
return Intervals; }
100 void addIntervalToPartition(
Interval *I);
106 void updatePredecessors(
Interval *Int);
111 #endif // LLVM_ANALYSIS_INTERVALPARTITION_H static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
This class represents lattice values for constants.
A Module instance is used to store all the information related to an LLVM module. ...
bool isDegeneratePartition()
Interval Class - An Interval is a set of nodes defined such that every node in the interval has all o...
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
const std::vector< Interval * > & getIntervals() const
std::pair< uint32_t, uint32_t > Interval
void print(raw_ostream &O, const Module *=nullptr) const override
print - Print out the internal state of the pass.
LLVM Basic Block Representation.
Represent the analysis usage information of a pass.
bool runOnFunction(Function &F) override
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass...
FunctionPass class - This class is used to implement most global optimizations.
void initializeIntervalPartitionPass(PassRegistry &)
Interval * getRootInterval()
void setPreservesAll()
Set by analyses that do not transform their input at all.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
This class implements an extremely fast bulk output stream that can only output to a stream...
Interval * getBlockInterval(BasicBlock *BB)