LLVM API Documentation

Classes | Namespaces | Defines | 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< NodeType, BlockT, RegionT >
 Hierarchical RegionNode successor iterator. More...
class  llvm::RNSuccIterator< FlatIt< NodeType >, BlockT, RegionT >
 Flat RegionNode iterator. More...
struct  llvm::GraphTraits< RegionInfo * >
struct  llvm::GraphTraits< RegionInfoPass * >

Namespaces

namespace  llvm
 

List of target independent CodeGen pass IDs.


Defines

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

Functions

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

Define Documentation

#define RegionGraphTraits (   RegionT,
  NodeT 
)
Value:
template<> struct GraphTraits<RegionT*> \
  : public GraphTraits<NodeT*> { \
  typedef df_iterator<NodeType*> nodes_iterator; \
  static NodeType *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<NodeType*, SmallPtrSet<NodeType*, 8>, false, \
  GraphTraits<FlatIt<NodeType*> > > nodes_iterator; \
  static NodeType *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)); \
  } \
}

Definition at line 296 of file RegionIterator.h.

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

Definition at line 272 of file RegionIterator.h.