LLVM API Documentation
#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"
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 RegionGraphTraits | ( | RegionT, | |
NodeT | |||
) |
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 | |||
) |
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.