mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
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:
parent
fe0a67c74e
commit
1a750e1d40
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user