class GenericCycleInfo

Declaration

template <typename ContextT>
class GenericCycleInfo { /* full declaration omitted */ };

Description

Cycle information for a function.

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:224

Templates

ContextT

Member Variables

private ContextT Context
private DenseMap<llvm::GenericCycleInfo::BlockT*, llvm::GenericCycleInfo::CycleT*> BlockMap
Map basic blocks to their inner-most containing cycle.
private DenseMap<llvm::GenericCycleInfo::BlockT*, llvm::GenericCycleInfo::CycleT*> BlockMapTopLevel
Map basic blocks to their top level containing cycle.
private std::vector<std::unique_ptr<CycleT>> TopLevelCycles
Note: The implementation treats the nullptr as the parent of every top-level cycle. See \ref contains for an example.

Method Overview

Methods

GenericCycleInfo<ContextT>()

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:254

GenericCycleInfo<ContextT>(
    GenericCycleInfo<ContextT>&&)

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:255

Parameters

GenericCycleInfo<ContextT>&&

void clear()

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:258

void compute(llvm::GenericCycleInfo::FunctionT& F)

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:259

Parameters

llvm::GenericCycleInfo::FunctionT& F

void dump() const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:274

llvm::GenericCycleInfo::CycleT* getCycle(
    const llvm::GenericCycleInfo::BlockT* Block)
    const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:264

Parameters

const llvm::GenericCycleInfo::BlockT* Block

unsigned int getCycleDepth(
    const llvm::GenericCycleInfo::BlockT* Block)
    const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:265

Parameters

const llvm::GenericCycleInfo::BlockT* Block

llvm::GenericCycleInfo::FunctionT* getFunction()
    const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:261

const ContextT& getSSAContext() const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:262

llvm::GenericCycleInfo::CycleT*
getTopLevelParentCycle(
    llvm::GenericCycleInfo::BlockT* Block)

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:266

Parameters

llvm::GenericCycleInfo::BlockT* Block

void moveTopLevelCycleToNewParent(
    llvm::GenericCycleInfo::CycleT* NewParent,
    llvm::GenericCycleInfo::CycleT* Child)

Description

Move \p Child to \p NewParent by manipulating Children vectors. Note: This is an incomplete operation that does not update the depth of the subtree.

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:251

Parameters

llvm::GenericCycleInfo::CycleT* NewParent
llvm::GenericCycleInfo::CycleT* Child

void print(llvm::raw_ostream& Out) const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:273

Parameters

llvm::raw_ostream& Out

llvm::GenericCycleInfo::const_toplevel_iterator
toplevel_begin() const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:295

iterator_range<llvm::GenericCycleInfo::
                   const_toplevel_iterator>
toplevel_cycles() const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:302

llvm::GenericCycleInfo::const_toplevel_iterator
toplevel_end() const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:298

bool validateTree() const

Declared at: llvm/include/llvm/ADT/GenericCycleInfo.h:271