Home | History | Annotate | Download | only in Analysis

Lines Matching refs: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) {
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) {
109 inline Interval::succ_iterator succ_end(Interval *I) {
116 inline Interval::pred_iterator pred_begin(Interval *I) {
119 inline Interval::pred_iterator pred_end(Interval *I) {
123 template <> struct GraphTraits<Interval*> {
124 typedef Interval *NodeRef;
125 typedef Interval::succ_iterator ChildIteratorType;
127 static NodeRef getEntryNode(Interval *I) { return I; }
134 template <> struct GraphTraits<Inverse<Interval*> > {
135 typedef Interval *NodeRef;
136 typedef Interval::pred_iterator ChildIteratorType;
137 static NodeRef getEntryNode(Inverse<Interval *> G) { return G.Graph; }