20 #ifndef LLVM_ANALYSIS_INTERVAL_H
21 #define LLVM_ANALYSIS_INTERVAL_H
48 Nodes.push_back(Header);
70 for (
unsigned i = 0; i <
Nodes.size(); ++i)
71 if (
Nodes[i] == BB)
return true;
79 for (
unsigned i = 0; i <
Successors.size(); ++i)
91 return HeaderNode == I.HeaderNode;
Interval::pred_iterator ChildIteratorType
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
Interval Class - An Interval is a set of nodes defined such that every node in the interval has all o...
Interval::succ_iterator ChildIteratorType
static NodeType * getEntryNode(Inverse< Interval * > G)
std::vector< BasicBlock * >::iterator node_iterator
static ChildIteratorType child_begin(NodeType *N)
Interval::succ_iterator succ_begin(Interval *I)
succ_begin/succ_end - define methods so that Intervals may be used just like BasicBlocks can with the...
bool contains(BasicBlock *BB) const
contains - Find out if a basic block is in this interval
static ChildIteratorType child_end(NodeType *N)
static ChildIteratorType child_end(NodeType *N)
Interval::succ_iterator succ_end(Interval *I)
LLVM Basic Block Representation.
void print(raw_ostream &O) const
print - Show contents in human readable format...
Interval::pred_iterator pred_begin(Interval *I)
pred_begin/pred_end - define methods so that Intervals may be used just like BasicBlocks can with the...
static ChildIteratorType child_begin(NodeType *N)
nodes_iterator/begin/end - Allow iteration over all nodes in the graph
Interval::pred_iterator pred_end(Interval *I)
std::vector< BasicBlock * > Nodes
Nodes - The basic blocks in this interval.
static NodeType * getEntryNode(Interval *I)
bool isLoop() const
isLoop - Find out if there is a back edge in this interval...
std::vector< BasicBlock * > Predecessors
Predecessors - List of BasicBlocks that have this Interval's header block as one of their successors...
bool operator==(const Interval &I) const
Equality operator.
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.
bool isSuccessor(BasicBlock *BB) const
isSuccessor - find out if a basic block is a successor of this Interval
std::vector< BasicBlock * >::iterator succ_iterator
This class implements an extremely fast bulk output stream that can only output to a stream...
Interval(BasicBlock *Header)
std::vector< BasicBlock * >::iterator pred_iterator