struct DivergencePropagator

Declaration

struct DivergencePropagator { /* full declaration omitted */ };

Declared at: llvm/lib/Analysis/SyncDependenceAnalysis.cpp:130

Member Variables

public const llvm::FunctionRPOT& FuncRPOT
public const llvm::DominatorTree& DT
public const llvm::PostDominatorTree& PDT
public const llvm::LoopInfo& LI
public std::unique_ptr<ConstBlockSet> JoinBlocks
public SmallPtrSet<const llvm::BasicBlock*, 4> ReachedLoopExits
public llvm::DivergencePropagator::DefiningBlockMap DefMap
public std::unordered_set<const BasicBlock*> PendingUpdates

Method Overview

  • public DivergencePropagator(const llvm::FunctionRPOT & FuncRPOT, const llvm::DominatorTree & DT, const llvm::PostDominatorTree & PDT, const llvm::LoopInfo & LI)
  • public void addPending(const llvm::BasicBlock & Block, const llvm::BasicBlock & DefBlock)
  • public template <typename SuccessorIterable>std::unique_ptr<ConstBlockSet> computeJoinPoints(const llvm::BasicBlock & RootBlock, SuccessorIterable NodeSuccessors, const llvm::Loop * ParentLoop)
  • public void printDefs(llvm::raw_ostream & Out)
  • public void visitSuccessor(const llvm::BasicBlock & SuccBlock, const llvm::Loop * ParentLoop, const llvm::BasicBlock & DefBlock)

Methods

DivergencePropagator(
    const llvm::FunctionRPOT& FuncRPOT,
    const llvm::DominatorTree& DT,
    const llvm::PostDominatorTree& PDT,
    const llvm::LoopInfo& LI)

Declared at: llvm/lib/Analysis/SyncDependenceAnalysis.cpp:152

Parameters

const llvm::FunctionRPOT& FuncRPOT
const llvm::DominatorTree& DT
const llvm::PostDominatorTree& PDT
const llvm::LoopInfo& LI

void addPending(const llvm::BasicBlock& Block,
                const llvm::BasicBlock& DefBlock)

Declared at: llvm/lib/Analysis/SyncDependenceAnalysis.cpp:158

Parameters

const llvm::BasicBlock& Block
const llvm::BasicBlock& DefBlock

template <typename SuccessorIterable>
std::unique_ptr<ConstBlockSet> computeJoinPoints(
    const llvm::BasicBlock& RootBlock,
    SuccessorIterable NodeSuccessors,
    const llvm::Loop* ParentLoop)

Declared at: llvm/lib/Analysis/SyncDependenceAnalysis.cpp:220

Templates

SuccessorIterable

Parameters

const llvm::BasicBlock& RootBlock
SuccessorIterable NodeSuccessors
const llvm::Loop* ParentLoop

void printDefs(llvm::raw_ostream& Out)

Declared at: llvm/lib/Analysis/SyncDependenceAnalysis.cpp:164

Parameters

llvm::raw_ostream& Out

void visitSuccessor(
    const llvm::BasicBlock& SuccBlock,
    const llvm::Loop* ParentLoop,
    const llvm::BasicBlock& DefBlock)

Declared at: llvm/lib/Analysis/SyncDependenceAnalysis.cpp:181

Parameters

const llvm::BasicBlock& SuccBlock
const llvm::Loop* ParentLoop
const llvm::BasicBlock& DefBlock