class SyncDependenceAnalysis

Declaration

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

Description

Relates points of divergent control to join points in reducible CFGs.

This analysis relates points of divergent control to points of converging divergent control. The analysis requires all loops to be reducible.

Declared at: llvm/include/llvm/Analysis/SyncDependenceAnalysis.h:60

Member Variables

private llvm::ModifiedPO LoopPO
private const llvm::DominatorTree& DT
private const llvm::PostDominatorTree& PDT
private const llvm::LoopInfo& LI
private std::map<const Instruction*, std::unique_ptr<ControlDivergenceDesc>> CachedControlDivDescs
private static llvm::ControlDivergenceDesc EmptyDivergenceDesc

Method Overview

Methods

SyncDependenceAnalysis(
    const llvm::DominatorTree& DT,
    const llvm::PostDominatorTree& PDT,
    const llvm::LoopInfo& LI)

Declared at: llvm/include/llvm/Analysis/SyncDependenceAnalysis.h:63

Parameters

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

const llvm::ControlDivergenceDesc& getJoinBlocks(
    const llvm::Instruction& Term)

Description

Computes divergent join points and loop exits caused by branch divergence in \p Term.

The set of blocks which are reachable by disjoint paths from \p Term. The set also contains loop exits if there two disjoint paths: one from \p Term to the loop exit and another from \p Term to the loop header. Those exit blocks are added to the returned set. If L is the parent loop of \p Term and an exit of L is in the returned set then L is a divergent loop.

Declared at: llvm/include/llvm/Analysis/SyncDependenceAnalysis.h:75

Parameters

const llvm::Instruction& Term

~SyncDependenceAnalysis()

Declared at: llvm/include/llvm/Analysis/SyncDependenceAnalysis.h:62