20 #ifndef LLVM_ANALYSIS_INTERVAL_H
21 #define LLVM_ANALYSIS_INTERVAL_H
48 Nodes.push_back(Header);
73 for (
unsigned i = 0; i <
Nodes.size(); ++i)
74 if (
Nodes[i] == BB)
return true;
82 for (
unsigned i = 0; i <
Successors.size(); ++i)
94 return HeaderNode == I.HeaderNode;
108 return I->Successors.begin();
111 return I->Successors.end();
118 return I->Predecessors.begin();
121 return I->Predecessors.end();
Interval::pred_iterator ChildIteratorType
Interval(const Interval &I)
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)
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)
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
static NodeType * getEntryNode(Interval *I)
bool isLoop() const
isLoop - Find out if there is a back edge in this interval...
std::vector< BasicBlock * > Predecessors
bool operator==(const Interval &I) const
BasicBlock * getHeaderNode() const
std::vector< BasicBlock * > Successors
bool isSuccessor(BasicBlock *BB) const
isSuccessor - find out if a basic block is a successor of this Interval
std::vector< BasicBlock * >::iterator succ_iterator
Interval(BasicBlock *Header)
std::vector< BasicBlock * >::iterator pred_iterator