class CFGMST

Declaration

template <class Edge, class BBInfo>
class CFGMST { /* full declaration omitted */ };

Description

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

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:37

Templates

Edge
BBInfo

Member Variables

public llvm::Function& F
public std::vector<std::unique_ptr<Edge>> AllEdges
public DenseMap<const llvm::BasicBlock*, std::unique_ptr<BBInfo>> BBInfos
public bool ExitBlockFound = false
public llvm::BranchProbabilityInfo* BPI
public llvm::BlockFrequencyInfo* BFI

Method Overview

Methods

CFGMST<Edge, BBInfo>(
    llvm::Function& Func,
    llvm::BranchProbabilityInfo* BPI_ = nullptr,
    llvm::BlockFrequencyInfo* BFI_ = nullptr)

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:275

Parameters

llvm::Function& Func
llvm::BranchProbabilityInfo* BPI_ = nullptr
llvm::BlockFrequencyInfo* BFI_ = nullptr

Edge& addEdge(const llvm::BasicBlock* Src,
              const llvm::BasicBlock* Dest,
              uint64_t W)

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:253

Parameters

const llvm::BasicBlock* Src
const llvm::BasicBlock* Dest
uint64_t W

void buildEdges()

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:98

void computeMinimumSpanningTree()

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:206

void dumpEdges(llvm::raw_ostream& OS,
               const llvm::Twine& Message) const

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:234

Parameters

llvm::raw_ostream& OS
const llvm::Twine& Message

BBInfo* findAndCompressGroup(BBInfo* G)

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:53

Parameters

BBInfo* G

BBInfo* findBBInfo(
    const llvm::BasicBlock* BB) const

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:88

Parameters

const llvm::BasicBlock* BB

BBInfo& getBBInfo(
    const llvm::BasicBlock* BB) const

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:81

Parameters

const llvm::BasicBlock* BB

void sortEdgesByWeight()

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:197

bool unionGroups(const llvm::BasicBlock* BB1,
                 const llvm::BasicBlock* BB2)

Declared at: llvm/lib/Transforms/Instrumentation/CFGMST.h:61

Parameters

const llvm::BasicBlock* BB1
const llvm::BasicBlock* BB2