summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-06-22 02:23:27 +0000
committerChris Lattner <sabre@nondot.org>2001-06-22 02:23:27 +0000
commit97c34800753675434e9fdbcdcdaa6f6a1ebc1ff3 (patch)
treebbf221c6cf9afe35323fb58a7a37598fa547f262 /llvm
parentdc36e44adcbb6f8cee16d103543919167cb9203a (diff)
downloadbcm5719-llvm-97c34800753675434e9fdbcdcdaa6f6a1ebc1ff3.tar.gz
bcm5719-llvm-97c34800753675434e9fdbcdcdaa6f6a1ebc1ff3.zip
Add comments
Interval::HeaderNode is now accessed thorugh an accessor function llvm-svn: 55
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/Analysis/Interval.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/llvm/include/llvm/Analysis/Interval.h b/llvm/include/llvm/Analysis/Interval.h
index b16c7a50391..ca6db9a3124 100644
--- a/llvm/include/llvm/Analysis/Interval.h
+++ b/llvm/include/llvm/Analysis/Interval.h
@@ -7,6 +7,12 @@
// 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).
//
+// 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
@@ -23,20 +29,25 @@ namespace cfg {
class IntervalPartition;
+//===----------------------------------------------------------------------===//
+//
// 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
// header)
+//
class Interval {
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
// interval. Also, any loops in this interval must go through the 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.
//
@@ -94,7 +105,8 @@ inline Interval::pred_iterator pred_end(Interval *I) {
}
-
+//===----------------------------------------------------------------------===//
+//
// IntervalPartition - This class builds and holds an "interval partition" for
// a method. This partition divides the control flow graph into a set of
// maximal intervals, as defined with the properties above. Intuitively, a
OpenPOWER on IntegriCloud