LLVM  4.0.0
Public Member Functions | Public Attributes | List of all members
llvm::CFGMST< Edge, BBInfo > Class Template Reference

An union-find based Minimum Spanning Tree for CFG. More...

#include <CFGMST.h>

Collaboration diagram for llvm::CFGMST< Edge, BBInfo >:
[legend]

Public Member Functions

BBInfo * findAndCompressGroup (BBInfo *G)
 
bool unionGroups (const BasicBlock *BB1, const BasicBlock *BB2)
 
BBInfo & getBBInfo (const BasicBlock *BB) const
 
BBInfo * findBBInfo (const BasicBlock *BB) const
 
void buildEdges ()
 
void sortEdgesByWeight ()
 
void computeMinimumSpanningTree ()
 
void dumpEdges (raw_ostream &OS, const Twine &Message) const
 
Edge & addEdge (const BasicBlock *Src, const BasicBlock *Dest, uint64_t W)
 
 CFGMST (Function &Func, BranchProbabilityInfo *BPI_=nullptr, BlockFrequencyInfo *BFI_=nullptr)
 

Public Attributes

FunctionF
 
std::vector< std::unique_ptr
< Edge > > 
AllEdges
 
DenseMap< const BasicBlock
*, std::unique_ptr< BBInfo > > 
BBInfos
 
BranchProbabilityInfoBPI
 
BlockFrequencyInfoBFI
 

Detailed Description

template<class Edge, class BBInfo>
class llvm::CFGMST< Edge, BBInfo >

An union-find based Minimum Spanning Tree for CFG.

Implements a Union-find algorithm to compute Minimum Spanning Tree for a given CFG.

Definition at line 35 of file CFGMST.h.

Constructor & Destructor Documentation

template<class Edge , class BBInfo >
llvm::CFGMST< Edge, BBInfo >::CFGMST ( Function Func,
BranchProbabilityInfo BPI_ = nullptr,
BlockFrequencyInfo BFI_ = nullptr 
)
inline

Member Function Documentation

template<class Edge , class BBInfo >
Edge& llvm::CFGMST< Edge, BBInfo >::addEdge ( const BasicBlock Src,
const BasicBlock Dest,
uint64_t  W 
)
inline
template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::buildEdges ( )
inline
template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::computeMinimumSpanningTree ( )
inline
template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::dumpEdges ( raw_ostream OS,
const Twine Message 
) const
inline
template<class Edge , class BBInfo >
BBInfo* llvm::CFGMST< Edge, BBInfo >::findAndCompressGroup ( BBInfo *  G)
inline

Definition at line 47 of file CFGMST.h.

Referenced by llvm::CFGMST< Edge, BBInfo >::unionGroups().

template<class Edge , class BBInfo >
BBInfo* llvm::CFGMST< Edge, BBInfo >::findBBInfo ( const BasicBlock BB) const
inline

Definition at line 82 of file CFGMST.h.

References llvm::CFGMST< Edge, BBInfo >::BBInfos.

template<class Edge , class BBInfo >
BBInfo& llvm::CFGMST< Edge, BBInfo >::getBBInfo ( const BasicBlock BB) const
inline
template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::sortEdgesByWeight ( )
inline

Definition at line 139 of file CFGMST.h.

References llvm::CFGMST< Edge, BBInfo >::AllEdges.

Referenced by llvm::CFGMST< Edge, BBInfo >::CFGMST().

template<class Edge , class BBInfo >
bool llvm::CFGMST< Edge, BBInfo >::unionGroups ( const BasicBlock BB1,
const BasicBlock BB2 
)
inline

Member Data Documentation

template<class Edge , class BBInfo >
std::vector<std::unique_ptr<Edge> > llvm::CFGMST< Edge, BBInfo >::AllEdges
template<class Edge , class BBInfo >
DenseMap<const BasicBlock *, std::unique_ptr<BBInfo> > llvm::CFGMST< Edge, BBInfo >::BBInfos
template<class Edge , class BBInfo >
BlockFrequencyInfo* llvm::CFGMST< Edge, BBInfo >::BFI

Definition at line 211 of file CFGMST.h.

Referenced by llvm::CFGMST< Edge, BBInfo >::buildEdges().

template<class Edge , class BBInfo >
BranchProbabilityInfo* llvm::CFGMST< Edge, BBInfo >::BPI

Definition at line 210 of file CFGMST.h.

Referenced by llvm::CFGMST< Edge, BBInfo >::buildEdges().

template<class Edge , class BBInfo >
Function& llvm::CFGMST< Edge, BBInfo >::F

Definition at line 37 of file CFGMST.h.

Referenced by llvm::CFGMST< Edge, BBInfo >::buildEdges().


The documentation for this class was generated from the following file: