LLVM  14.0.0git
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

 ~SyncDependenceAnalysis ()
 
 SyncDependenceAnalysis (const DominatorTree &DT, const PostDominatorTree &PDT, const LoopInfo &LI)
 
const ControlDivergenceDescgetJoinBlocks (const Instruction &Term)
 Computes divergent join points and loop exits caused by branch divergence in Term. 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 60 of file SyncDependenceAnalysis.h.

Constructor & Destructor Documentation

◆ ~SyncDependenceAnalysis()

llvm::SyncDependenceAnalysis::~SyncDependenceAnalysis ( )

Definition at line 241 of file SyncDependenceAnalysis.cpp.

◆ SyncDependenceAnalysis()

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

Member Function Documentation

◆ getJoinBlocks()

const ControlDivergenceDesc & llvm::SyncDependenceAnalysis::getJoinBlocks ( 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 431 of file SyncDependenceAnalysis.cpp.

References assert(), llvm::DivergencePropagator::computeJoinPoints(), llvm::dbgs(), LLVM_DEBUG, move, llvm::printBlockSet(), and llvm::M68kBeads::Term.


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