20 "Interval Partition Construction",
true,
true)
32 RootInterval =
nullptr;
36 for(
unsigned i = 0, e = Intervals.size();
i != e; ++
i)
44 void IntervalPartition::addIntervalToPartition(
Interval *
I) {
45 Intervals.push_back(I);
58 void IntervalPartition::updatePredecessors(
Interval *Int) {
72 addIntervalToPartition(RootInterval = *I);
78 addIntervalToPartition(*I);
82 for (
unsigned i = 0, e = Intervals.size();
i != e; ++
i)
83 updatePredecessors(Intervals[
i]);
100 addIntervalToPartition(RootInterval = *I);
106 addIntervalToPartition(*I);
110 for (
unsigned i = 0, e = Intervals.size();
i != e; ++
i)
111 updatePredecessors(Intervals[
i]);
function_interval_iterator intervals_end(Function *)
A Module instance is used to store all the information related to an LLVM module. ...
Interval Class - An Interval is a set of nodes defined such that every node in the interval has all o...
std::vector< BasicBlock * >::iterator node_iterator
function_interval_iterator intervals_begin(Function *F, bool DeleteInts=true)
void clear()
clear - Remove all entries.
static GCRegistry::Add< CoreCLRGC > E("coreclr","CoreCLR-compatible GC")
void print(raw_ostream &O, const Module *=nullptr) const override
print - Print out the internal state of the pass.
LLVM Basic Block Representation.
static const unsigned End
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.
std::vector< BasicBlock * > Nodes
Nodes - The basic blocks in this interval.
INITIALIZE_PASS(IntervalPartition,"intervals","Interval Partition Construction", true, true) void IntervalPartition
void insert(KeyT a, KeyT b, ValT y)
insert - Add a mapping of [a;b] to y, coalesce with adjacent intervals.
std::vector< BasicBlock * > Predecessors
Predecessors - List of BasicBlocks that have this Interval's header block as one of their successors...
Interval * getRootInterval()
BasicBlock * getHeaderNode() const
std::vector< BasicBlock * > Successors
Successors - List of BasicBlocks that are reachable directly from nodes in this interval, but are not in the interval themselves.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This class implements an extremely fast bulk output stream that can only output to a stream...
Interval * getBlockInterval(BasicBlock *BB)