mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +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
|
#ifndef LLVM_INTERVAL_H
|
||||||
#define LLVM_INTERVAL_H
|
#define LLVM_INTERVAL_H
|
||||||
|
|
||||||
|
#include "Support/GraphTraits.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
|
|
||||||
@ -111,4 +112,31 @@ inline Interval::pred_iterator pred_end(Interval *I) {
|
|||||||
return I->Predecessors.end();
|
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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user