Lines Matching full:interval
1 //===- llvm/Analysis/Interval.h - Interval Class Declaration ----*- C++ -*-===//
10 // This file contains the declaration of the Interval class, which
11 // represents a set of CFG nodes and is a portion of an interval partition.
15 // 1. The header node of an interval dominates all of the elements of the
16 // interval
33 /// Interval Class - An Interval is a set of nodes defined such that every node
34 /// in the interval has all of its predecessors in the interval (except for the
37 class Interval {
39 /// interval. Also, any loops in this interval must go through the HeaderNode.
47 inline Interval(BasicBlock *Header) : HeaderNode(Header) { in Interval() function
53 /// Nodes - The basic blocks in this interval.
58 /// this interval, but are not in the interval themselves.
63 /// Predecessors - List of BasicBlocks that have this Interval's header block
68 /// contains - Find out if a basic block is in this interval
78 /// isSuccessor - find out if a basic block is a successor of this Interval
92 inline bool operator==(const Interval &I) const {
96 /// isLoop - Find out if there is a back edge in this interval...
106 inline Interval::succ_iterator succ_begin(Interval *I) { in succ_begin()
109 inline Interval::succ_iterator succ_end(Interval *I) { in succ_end()
116 inline Interval::pred_iterator pred_begin(Interval *I) { in pred_begin()
119 inline Interval::pred_iterator pred_end(Interval *I) { in pred_end()
123 template <> struct GraphTraits<Interval*> {
124 typedef Interval NodeType;
125 typedef Interval::succ_iterator ChildIteratorType;
127 static NodeType *getEntryNode(Interval *I) { return I; }
138 template <> struct GraphTraits<Inverse<Interval*> > {
139 typedef Interval NodeType;
140 typedef Interval::pred_iterator ChildIteratorType;
141 static NodeType *getEntryNode(Inverse<Interval *> G) { return G.Graph; }