mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Add graph traits specializations for intervals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8808 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
08fdac89e6
commit
96f7b1bf32
@ -13,6 +13,7 @@
|
||||
#ifndef LLVM_INTERVAL_H
|
||||
#define LLVM_INTERVAL_H
|
||||
|
||||
#include "Support/GraphTraits.h"
|
||||
#include <vector>
|
||||
#include <iosfwd>
|
||||
|
||||
@ -111,4 +112,31 @@ inline Interval::pred_iterator pred_end(Interval *I) {
|
||||
return I->Predecessors.end();
|
||||
}
|
||||
|
||||
template <> struct GraphTraits<Interval*> {
|
||||
typedef Interval NodeType;
|
||||
typedef Interval::succ_iterator ChildIteratorType;
|
||||
|
||||
static NodeType *getEntryNode(Interval *I) { return I; }
|
||||
|
||||
// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
|
||||
static inline ChildIteratorType child_begin(NodeType *N) {
|
||||
return succ_begin(N);
|
||||
}
|
||||
static inline ChildIteratorType child_end(NodeType *N) {
|
||||
return succ_end(N);
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct GraphTraits<Inverse<Interval*> > {
|
||||
typedef Interval NodeType;
|
||||
typedef Interval::pred_iterator ChildIteratorType;
|
||||
static NodeType *getEntryNode(Inverse<Interval *> G) { return G.Graph; }
|
||||
static inline ChildIteratorType child_begin(NodeType *N) {
|
||||
return pred_begin(N);
|
||||
}
|
||||
static inline ChildIteratorType child_end(NodeType *N) {
|
||||
return pred_end(N);
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user