summaryrefslogtreecommitdiff
path: root/include/llvm/Analysis/Interval.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-10-01 22:27:36 +0000
committerChris Lattner <sabre@nondot.org>2003-10-01 22:27:36 +0000
commit96f7b1bf32645065c3222bf62973bb28d2b8eca0 (patch)
treea1322ac9aad63247db880d0fea80af2b88468f9f /include/llvm/Analysis/Interval.h
parent08fdac89e628ab067f86b2828509d5566db9904a (diff)
downloadllvm-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.h28
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