Go to the documentation of this file.
19 #ifndef LLVM_ANALYSIS_INTERVAL_H
20 #define LLVM_ANALYSIS_INTERVAL_H
48 Nodes.push_back(Header);
89 return HeaderNode ==
I.HeaderNode;
100 return I->Successors.begin();
103 return I->Successors.end();
110 return I->Predecessors.begin();
113 return I->Predecessors.end();
138 #endif // LLVM_ANALYSIS_INTERVAL_H
static ChildIteratorType child_begin(NodeRef N)
This is an optimization pass for GlobalISel generic memory operations.
bool contains(BasicBlock *BB) const
contains - Find out if a basic block is in this interval
Interval::succ_iterator succ_end(Interval *I)
void print(raw_ostream &O) const
print - Show contents in human readable format...
BasicBlock * getHeaderNode() const
Interval(BasicBlock *Header)
static ChildIteratorType child_end(NodeRef N)
static NodeRef getEntryNode(Inverse< Interval * > G)
LLVM Basic Block Representation.
static NodeRef getEntryNode(Interval *I)
bool operator==(const Interval &I) const
Equality operator.
Interval::pred_iterator ChildIteratorType
std::vector< BasicBlock * >::iterator pred_iterator
This class implements an extremely fast bulk output stream that can only output to a stream.
Interval::succ_iterator ChildIteratorType
std::vector< BasicBlock * >::iterator node_iterator
std::vector< BasicBlock * > Successors
Successors - List of BasicBlocks that are reachable directly from nodes in this interval,...
bool isSuccessor(BasicBlock *BB) const
isSuccessor - find out if a basic block is a successor of this Interval
Interval Class - An Interval is a set of nodes defined such that every node in the interval has all o...
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...
@ BasicBlock
Various leaf nodes.
std::vector< BasicBlock * > Nodes
Nodes - The basic blocks in this interval.
static ChildIteratorType child_begin(NodeRef N)
nodes_iterator/begin/end - Allow iteration over all nodes in the graph
static ChildIteratorType child_end(NodeRef N)
Interval::pred_iterator pred_end(Interval *I)
std::vector< BasicBlock * >::iterator succ_iterator
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...
Common register allocation spilling lr str ldr sxth r3 ldr mla r4 can lr mov lr str ldr sxth r3 mla r4 and then merge mul and lr str ldr sxth r3 mla r4 It also increase the likelihood the store may become dead bb27 Successors according to LLVM BB
std::vector< BasicBlock * > Predecessors
Predecessors - List of BasicBlocks that have this Interval's header block as one of their successors.