LLVM  4.0.0
Classes | Namespaces | Macros | Functions
RegionIterator.h File Reference
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Analysis/RegionInfo.h"
#include "llvm/IR/CFG.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for RegionIterator.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::RNSuccIterator< NodeRef, BlockT, RegionT >
 Hierarchical RegionNode successor iterator. More...
 
class  llvm::RNSuccIterator< FlatIt< NodeRef >, BlockT, RegionT >
 Flat RegionNode iterator. More...
 
struct  llvm::GraphTraits< RegionInfo * >
 
struct  llvm::GraphTraits< RegionInfoPass * >
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define RegionNodeGraphTraits(NodeT, BlockT, RegionT)
 
#define RegionGraphTraits(RegionT, NodeT)
 

Functions

template<class NodeRef , class BlockT , class RegionT >
RNSuccIterator< NodeRef,
BlockT, RegionT > 
llvm::succ_begin (NodeRef Node)
 
template<class NodeRef , class BlockT , class RegionT >
RNSuccIterator< NodeRef,
BlockT, RegionT > 
llvm::succ_end (NodeRef Node)
 
 llvm::RegionNodeGraphTraits (RegionNode, BasicBlock, Region)
 
 llvm::RegionGraphTraits (Region, RegionNode)
 

Macro Definition Documentation

#define RegionGraphTraits (   RegionT,
  NodeT 
)
Value:
template <> struct GraphTraits<RegionT *> : public GraphTraits<NodeT *> { \
typedef df_iterator<NodeRef> nodes_iterator; \
static NodeRef getEntryNode(RegionT *R) { \
return R->getNode(R->getEntry()); \
} \
static nodes_iterator nodes_begin(RegionT *R) { \
return nodes_iterator::begin(getEntryNode(R)); \
} \
static nodes_iterator nodes_end(RegionT *R) { \
return nodes_iterator::end(getEntryNode(R)); \
} \
}; \
template <> \
struct GraphTraits<FlatIt<RegionT *>> \
: public GraphTraits<FlatIt<NodeT *>> { \
typedef df_iterator<NodeRef, df_iterator_default_set<NodeRef>, false, \
GraphTraits<FlatIt<NodeRef>>> \
nodes_iterator; \
static NodeRef getEntryNode(RegionT *R) { \
return R->getBBNode(R->getEntry()); \
} \
static nodes_iterator nodes_begin(RegionT *R) { \
return nodes_iterator::begin(getEntryNode(R)); \
} \
static nodes_iterator nodes_end(RegionT *R) { \
return nodes_iterator::end(getEntryNode(R)); \
} \
}
const_iterator end(StringRef path)
Get end iterator over path.
Definition: Path.cpp:241
const_iterator begin(StringRef path)
Get begin iterator over path.
Definition: Path.cpp:233

Definition at line 281 of file RegionIterator.h.

#define RegionNodeGraphTraits (   NodeT,
  BlockT,
  RegionT 
)
Value:
template <> struct GraphTraits<NodeT *> { \
typedef NodeT *NodeRef; \
typedef RNSuccIterator<NodeRef, BlockT, RegionT> ChildIteratorType; \
static NodeRef getEntryNode(NodeRef N) { return N; } \
static inline ChildIteratorType child_begin(NodeRef N) { \
return RNSuccIterator<NodeRef, BlockT, RegionT>(N); \
} \
static inline ChildIteratorType child_end(NodeRef N) { \
return RNSuccIterator<NodeRef, BlockT, RegionT>(N, true); \
} \
}; \
template <> struct GraphTraits<FlatIt<NodeT *>> { \
typedef NodeT *NodeRef; \
typedef RNSuccIterator<FlatIt<NodeRef>, BlockT, RegionT> \
ChildIteratorType; \
static NodeRef getEntryNode(NodeRef N) { return N; } \
static inline ChildIteratorType child_begin(NodeRef N) { \
return RNSuccIterator<FlatIt<NodeRef>, BlockT, RegionT>(N); \
} \
static inline ChildIteratorType child_end(NodeRef N) { \
return RNSuccIterator<FlatIt<NodeRef>, BlockT, RegionT>(N, true); \
} \
}
#define N

Definition at line 256 of file RegionIterator.h.