class LoopBlocksDFS

Declaration

class LoopBlocksDFS { /* full declaration omitted */ };

Description

Store the result of a depth first search within basic blocks contained by a single loop. TODO: This could be generalized for any CFG region, or the entire CFG.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:97

Method Overview

  • public LoopBlocksDFS(llvm::Loop * Container)
  • public llvm::LoopBlocksDFS::POIterator beginPostorder() const
  • public llvm::LoopBlocksDFS::RPOIterator beginRPO() const
  • public void clear()
  • public llvm::LoopBlocksDFS::POIterator endPostorder() const
  • public llvm::LoopBlocksDFS::RPOIterator endRPO() const
  • public llvm::Loop * getLoop() const
  • public unsigned int getPostorder(llvm::BasicBlock * BB) const
  • public unsigned int getRPO(llvm::BasicBlock * BB) const
  • public bool hasPostorder(llvm::BasicBlock * BB) const
  • public bool hasPreorder(llvm::BasicBlock * BB) const
  • public bool isComplete() const
  • public void perform(llvm::LoopInfo * LI)

Methods

LoopBlocksDFS(llvm::Loop* Container)

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:115

Parameters

llvm::Loop* Container

llvm::LoopBlocksDFS::POIterator beginPostorder()
    const

Description

Iterate over the cached postorder blocks.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:129

llvm::LoopBlocksDFS::RPOIterator beginRPO() const

Description

Reverse iterate over the cached postorder blocks.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:136

void clear()

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:164

llvm::LoopBlocksDFS::POIterator endPostorder()
    const

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:133

llvm::LoopBlocksDFS::RPOIterator endRPO() const

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:140

llvm::Loop* getLoop() const

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:120

unsigned int getPostorder(
    llvm::BasicBlock* BB) const

Description

Get a block's postorder number.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:152

Parameters

llvm::BasicBlock* BB

unsigned int getRPO(llvm::BasicBlock* BB) const

Description

Get a block's reverse postorder number.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:160

Parameters

llvm::BasicBlock* BB

bool hasPostorder(llvm::BasicBlock* BB) const

Description

Return true if this block has a postorder number.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:146

Parameters

llvm::BasicBlock* BB

bool hasPreorder(llvm::BasicBlock* BB) const

Description

Return true if this block has been preorder visited.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:143

Parameters

llvm::BasicBlock* BB

bool isComplete() const

Description

Return true if postorder numbers are assigned to all loop blocks.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:126

void perform(llvm::LoopInfo* LI)

Description

Traverse the loop blocks and store the DFS result.

Declared at: llvm/include/llvm/Analysis/LoopIterator.h:123

Parameters

llvm::LoopInfo* LI