LLVM  10.0.0svn
Public Member Functions | List of all members
llvm::SyncDependenceAnalysis Class Reference

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

#include "llvm/Analysis/SyncDependenceAnalysis.h"

Public Member Functions

bool inRegion (const BasicBlock &BB) const
 
 ~SyncDependenceAnalysis ()
 
 SyncDependenceAnalysis (const DominatorTree &DT, const PostDominatorTree &PDT, const LoopInfo &LI)
 
const ConstBlockSetjoin_blocks (const Instruction &Term)
 Computes divergent join points and loop exits caused by branch divergence in Term. More...
 
const ConstBlockSetjoin_blocks (const Loop &Loop)
 Computes divergent join points and loop exits (in the surrounding loop) caused by the divergent loop exits ofLoop. More...
 

Detailed 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.

Definition at line 39 of file SyncDependenceAnalysis.h.

Constructor & Destructor Documentation

◆ ~SyncDependenceAnalysis()

llvm::SyncDependenceAnalysis::~SyncDependenceAnalysis ( )

Definition at line 125 of file SyncDependenceAnalysis.cpp.

◆ SyncDependenceAnalysis()

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

Definition at line 120 of file SyncDependenceAnalysis.cpp.

Member Function Documentation

◆ inRegion()

bool llvm::SyncDependenceAnalysis::inRegion ( const BasicBlock BB) const

◆ join_blocks() [1/2]

const ConstBlockSet & llvm::SyncDependenceAnalysis::join_blocks ( const Instruction Term)

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

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

Definition at line 358 of file SyncDependenceAnalysis.cpp.

References assert(), llvm::DivergencePropagator::computeJoinPoints(), llvm::SmallPtrSetImpl< PtrType >::find(), llvm::Instruction::getNumSuccessors(), and llvm::successors().

Referenced by llvm::DivergenceAnalysis::inRegion().

◆ join_blocks() [2/2]

const ConstBlockSet & llvm::SyncDependenceAnalysis::join_blocks ( const Loop Loop)

Computes divergent join points and loop exits (in the surrounding loop) caused by the divergent loop exits ofLoop.

The set of blocks which are reachable by disjoint paths from the loop exits of Loop. This treats the loop as a single node in Loop's parent loop. The returned set has the same properties as for join_blocks(TermInst&).

Definition at line 333 of file SyncDependenceAnalysis.cpp.

References assert(), llvm::DivergencePropagator::computeJoinPoints(), llvm::LoopBase< BlockT, LoopT >::getExitBlocks(), llvm::LoopBase< BlockT, LoopT >::getHeader(), and llvm::LoopBase< BlockT, LoopT >::getParentLoop().


The documentation for this class was generated from the following files: