mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Add graph traits specializations for loop nesting information...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5666 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
46f1785def
commit
1db0a40037
@ -19,6 +19,7 @@
|
||||
#define LLVM_ANALYSIS_LOOP_INFO_H
|
||||
|
||||
#include "llvm/Pass.h"
|
||||
#include "Support/GraphTraits.h"
|
||||
#include <set>
|
||||
|
||||
class DominatorSet;
|
||||
@ -186,4 +187,31 @@ private:
|
||||
static IncludeFile
|
||||
LOOP_INFO_INCLUDE_FILE((void*)&LoopInfo::stub);
|
||||
|
||||
// Allow clients to walk the list of nested loops...
|
||||
template <> struct GraphTraits<const Loop*> {
|
||||
typedef const Loop NodeType;
|
||||
typedef std::vector<Loop*>::const_iterator ChildIteratorType;
|
||||
|
||||
static NodeType *getEntryNode(const Loop *L) { return L; }
|
||||
static inline ChildIteratorType child_begin(NodeType *N) {
|
||||
return N->getSubLoops().begin();
|
||||
}
|
||||
static inline ChildIteratorType child_end(NodeType *N) {
|
||||
return N->getSubLoops().end();
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct GraphTraits<Loop*> {
|
||||
typedef Loop NodeType;
|
||||
typedef std::vector<Loop*>::const_iterator ChildIteratorType;
|
||||
|
||||
static NodeType *getEntryNode(Loop *L) { return L; }
|
||||
static inline ChildIteratorType child_begin(NodeType *N) {
|
||||
return N->getSubLoops().begin();
|
||||
}
|
||||
static inline ChildIteratorType child_end(NodeType *N) {
|
||||
return N->getSubLoops().end();
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user