From 61315bc3676f7d01f4fa82c716327457f565f831 Mon Sep 17 00:00:00 2001 From: Joel Stanley Date: Wed, 16 Oct 2002 23:26:00 +0000 Subject: [PATCH] Added partial specialization of GraphTraits for the DominatorTree class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4205 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Analysis/Dominators.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/llvm/Analysis/Dominators.h b/include/llvm/Analysis/Dominators.h index 815be7dfaf3..3304ad330c1 100644 --- a/include/llvm/Analysis/Dominators.h +++ b/include/llvm/Analysis/Dominators.h @@ -19,6 +19,7 @@ #define LLVM_ANALYSIS_DOMINATORS_H #include "llvm/Pass.h" +#include "Support/GraphTraits.h" #include class Instruction; @@ -341,6 +342,24 @@ private: void calculate(const DominatorSet &DS); }; +//===------------------------------------- +// DominatorTree GraphTraits specialization so the DominatorTree can be +// iterable by generic graph iterators. + +template <> struct GraphTraits { + typedef DominatorTree::Node NodeType; + typedef NodeType::iterator ChildIteratorType; + + static NodeType *getEntryNode(DominatorTree *DT) { + return DT->getNode(DT->getRoot()); + } + static inline ChildIteratorType child_begin(NodeType* N) { + return N->begin(); + } + static inline ChildIteratorType child_end(NodeType* N) { + return N->end(); + } +}; //===----------------------------------------------------------------------===// //