LLVM
17.0.0git
|
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 ControlDivergenceDesc & | getJoinBlocks (const Instruction &Term) |
Computes divergent join points and loop exits caused by branch divergence in Term . More... | |
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.
|
default |
llvm::SyncDependenceAnalysis::SyncDependenceAnalysis | ( | const DominatorTree & | DT, |
const PostDominatorTree & | PDT, | ||
const LoopInfo & | LI | ||
) |
Definition at line 250 of file SyncDependenceAnalysis.cpp.
References BB, llvm::BasicBlock::getParent(), and llvm::DominatorTreeBase< NodeT, IsPostDom >::getRoot().
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 450 of file SyncDependenceAnalysis.cpp.
References assert(), llvm::DivergencePropagator< ContextT >::computeJoinPoints(), llvm::dbgs(), LLVM_DEBUG, move, llvm::printBlockSet(), and llvm::M68kBeads::Term.