Add comments

Interval::HeaderNode is now accessed thorugh an accessor function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2001-06-22 02:23:27 +00:00
parent fe0a67c74e
commit 1a750e1d40

View File

@ -7,6 +7,12 @@
// In this way, the interval partition may be used to reduce a flow graph down // In this way, the interval partition may be used to reduce a flow graph down
// to its degenerate single node interval partition (unless it is irreducible). // to its degenerate single node interval partition (unless it is irreducible).
// //
// TODO: Provide an interval iterator that codifies the internals of
// IntervalPartition. Inside, it would have a stack of Interval*'s, and would
// walk the interval partition in depth first order. IntervalPartition would
// then be a client of this iterator. The iterator should work on Method*,
// const Method*, IntervalPartition*, and const IntervalPartition*.
//
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#ifndef LLVM_INTERVALS_H #ifndef LLVM_INTERVALS_H
@ -23,20 +29,25 @@ namespace cfg {
class IntervalPartition; class IntervalPartition;
//===----------------------------------------------------------------------===//
//
// Interval Class - An Interval is a set of nodes defined such that every node // Interval Class - An Interval is a set of nodes defined such that every node
// in the interval has all of its predecessors in the interval (except for the // in the interval has all of its predecessors in the interval (except for the
// header) // header)
//
class Interval { class Interval {
friend class IntervalPartition; friend class IntervalPartition;
public:
typedef vector<BasicBlock*>::iterator succ_iterator;
typedef vector<BasicBlock*>::iterator pred_iterator;
typedef vector<BasicBlock*>::iterator node_iterator;
// HeaderNode - The header BasicBlock, which dominates all BasicBlocks in this // HeaderNode - The header BasicBlock, which dominates all BasicBlocks in this
// interval. Also, any loops in this interval must go through the HeaderNode. // interval. Also, any loops in this interval must go through the HeaderNode.
// //
BasicBlock *HeaderNode; BasicBlock *HeaderNode;
public:
typedef vector<BasicBlock*>::iterator succ_iterator;
typedef vector<BasicBlock*>::iterator pred_iterator;
typedef vector<BasicBlock*>::iterator node_iterator;
inline BasicBlock *getHeaderNode() const { return HeaderNode; }
// Nodes - The basic blocks in this interval. // Nodes - The basic blocks in this interval.
// //
@ -94,7 +105,8 @@ inline Interval::pred_iterator pred_end(Interval *I) {
} }
//===----------------------------------------------------------------------===//
//
// IntervalPartition - This class builds and holds an "interval partition" for // IntervalPartition - This class builds and holds an "interval partition" for
// a method. This partition divides the control flow graph into a set of // a method. This partition divides the control flow graph into a set of
// maximal intervals, as defined with the properties above. Intuitively, a // maximal intervals, as defined with the properties above. Intuitively, a