LLVM  4.0.0
Classes | Namespaces | Typedefs | Functions
GenericDomTree.h File Reference

This file defines a set of templates that efficiently compute a dominator tree over a generic graph. More...

#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
Include dependency graph for GenericDomTree.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::DominatorTreeBase< N >
 Core dominator tree base class. More...
 
struct  llvm::detail::DominatorTreeBaseTraits< GT >
 
class  llvm::DominatorBase< NodeT >
 Base class that other, more interesting dominator analyses inherit from. More...
 
class  llvm::DomTreeNodeBase< NodeT >
 Base class for the actual dominator tree node. More...
 
class  llvm::DominatorTreeBase< N >
 Core dominator tree base class. More...
 
struct  llvm::DominatorTreeBase< N >::InfoRec
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 
 llvm::detail
 Implementation details of the pass manager interfaces.
 

Typedefs

template<typename GT >
using llvm::DominatorTreeBaseByGraphTraits = typename detail::DominatorTreeBaseTraits< GT >::type
 

Functions

template<class NodeT >
raw_ostream & llvm::operator<< (raw_ostream &o, const DomTreeNodeBase< NodeT > *Node)
 
template<class NodeT >
void llvm::PrintDomTree (const DomTreeNodeBase< NodeT > *N, raw_ostream &o, unsigned Lev)
 
template<class FuncT , class N >
void llvm::Calculate (DominatorTreeBaseByGraphTraits< GraphTraits< N >> &DT, FuncT &F)
 

Detailed Description

This file defines a set of templates that efficiently compute a dominator tree over a generic graph.

This is used typically in LLVM for fast dominance queries on the CFG, but is fully generic w.r.t. the underlying graph types.

Unlike ADT/* graph algorithms, generic dominator tree has more reuiqrement on the graph's NodeRef. The NodeRef should be a pointer and, depending on the implementation, e.g. NodeRef->getParent() return the parent node.

FIXME: Maybe GenericDomTree needs a TreeTraits, instead of GraphTraits.

Definition in file GenericDomTree.h.