diff options
author | Chris Lattner <sabre@nondot.org> | 2003-10-01 22:27:36 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-10-01 22:27:36 +0000 |
commit | 96f7b1bf32645065c3222bf62973bb28d2b8eca0 (patch) | |
tree | a1322ac9aad63247db880d0fea80af2b88468f9f /include/llvm/Analysis/Interval.h | |
parent | 08fdac89e628ab067f86b2828509d5566db9904a (diff) | |
download | llvm-96f7b1bf32645065c3222bf62973bb28d2b8eca0.tar.gz llvm-96f7b1bf32645065c3222bf62973bb28d2b8eca0.tar.bz2 llvm-96f7b1bf32645065c3222bf62973bb28d2b8eca0.tar.xz |
Add graph traits specializations for intervals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8808 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/Interval.h')
-rw-r--r-- | include/llvm/Analysis/Interval.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/llvm/Analysis/Interval.h b/include/llvm/Analysis/Interval.h index 3974c72871..86965df90d 100644 --- a/include/llvm/Analysis/Interval.h +++ b/include/llvm/Analysis/Interval.h @@ -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 |