27 "Interval Partition Construction",
true,
true)
35 for (
unsigned i = 0, e = Intervals.size(); i != e; ++i)
39 RootInterval =
nullptr;
43 for(
unsigned i = 0, e = Intervals.size(); i != e; ++i)
44 Intervals[i]->
print(O);
50 void IntervalPartition::addIntervalToPartition(
Interval *
I) {
51 Intervals.push_back(I);
63 void IntervalPartition::updatePredecessors(
Interval *Int) {
76 addIntervalToPartition(RootInterval = *I);
82 addIntervalToPartition(*I);
86 for (
unsigned i = 0, e = Intervals.size(); i != e; ++i)
87 updatePredecessors(Intervals[i]);
102 addIntervalToPartition(RootInterval = *I);
108 addIntervalToPartition(*I);
112 for (
unsigned i = 0, e = Intervals.size(); i != e; ++i)
113 updatePredecessors(Intervals[i]);
function_interval_iterator intervals_end(Function *)
This class represents lattice values for constants.
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
INITIALIZE_PASS(IntervalPartition, "intervals", "Interval Partition Construction", true, true) void IntervalPartition
function_interval_iterator intervals_begin(Function *F, bool DeleteInts=true)
void clear()
clear - Remove all entries.
BasicBlock * getHeaderNode() const
void print(raw_ostream &O, const Module *=nullptr) const override
print - Print out the internal state of the pass.
LLVM Basic Block Representation.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
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.
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()
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)