LLVM 17.0.0git
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 "llvm/Transforms/Instrumentation/CFGMST.h"

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 (BasicBlock *Src, BasicBlock *Dest, uint64_t W)
 
 CFGMST (Function &Func, bool InstrumentFuncEntry_, BranchProbabilityInfo *BPI_=nullptr, BlockFrequencyInfo *BFI_=nullptr)
 

Public Attributes

FunctionF
 
std::vector< std::unique_ptr< Edge > > AllEdges
 
DenseMap< const BasicBlock *, std::unique_ptr< BBInfo > > BBInfos
 
bool ExitBlockFound = false
 
BranchProbabilityInfoBPI
 
BlockFrequencyInfoBFI
 
bool InstrumentFuncEntry
 

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 39 of file CFGMST.h.

Constructor & Destructor Documentation

◆ CFGMST()

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

Member Function Documentation

◆ addEdge()

template<class Edge , class BBInfo >
Edge & llvm::CFGMST< Edge, BBInfo >::addEdge ( BasicBlock Src,
BasicBlock Dest,
uint64_t  W 
)
inline

◆ buildEdges()

template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::buildEdges ( )
inline

◆ computeMinimumSpanningTree()

template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::computeMinimumSpanningTree ( )
inline

◆ dumpEdges()

template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::dumpEdges ( raw_ostream OS,
const Twine Message 
) const
inline

◆ findAndCompressGroup()

template<class Edge , class BBInfo >
BBInfo * llvm::CFGMST< Edge, BBInfo >::findAndCompressGroup ( BBInfo *  G)
inline

◆ findBBInfo()

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

Definition at line 90 of file CFGMST.h.

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

◆ getBBInfo()

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

◆ sortEdgesByWeight()

template<class Edge , class BBInfo >
void llvm::CFGMST< Edge, BBInfo >::sortEdgesByWeight ( )
inline

◆ unionGroups()

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

Member Data Documentation

◆ AllEdges

template<class Edge , class BBInfo >
std::vector<std::unique_ptr<Edge> > llvm::CFGMST< Edge, BBInfo >::AllEdges

◆ BBInfos

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

◆ BFI

template<class Edge , class BBInfo >
BlockFrequencyInfo* llvm::CFGMST< Edge, BBInfo >::BFI

Definition at line 279 of file CFGMST.h.

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

◆ BPI

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

Definition at line 278 of file CFGMST.h.

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

◆ ExitBlockFound

template<class Edge , class BBInfo >
bool llvm::CFGMST< Edge, BBInfo >::ExitBlockFound = false

◆ F

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

Definition at line 41 of file CFGMST.h.

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

◆ InstrumentFuncEntry

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

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