Go to the source code of this file.
|
namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations.
|
|
|
| INITIALIZE_PASS_BEGIN (FixIrreducible, "fix-irreducible", "Convert irreducible control-flow into natural loops", false, false) INITIALIZE_PASS_END(FixIrreducible |
|
fix Convert irreducible control flow into natural static false void | reconnectChildLoops (LoopInfo &LI, Loop *ParentLoop, Loop *NewLoop, SetVector< BasicBlock * > &Blocks, SetVector< BasicBlock * > &Headers) |
|
static void | createNaturalLoopInternal (LoopInfo &LI, DominatorTree &DT, Loop *ParentLoop, SetVector< BasicBlock * > &Blocks, SetVector< BasicBlock * > &Headers) |
|
static BasicBlock * | unwrapBlock (BasicBlock *B) |
|
static BasicBlock * | unwrapBlock (LoopBodyTraits::NodeRef &N) |
|
static void | createNaturalLoop (LoopInfo &LI, DominatorTree &DT, Function *F, SetVector< BasicBlock * > &Blocks, SetVector< BasicBlock * > &Headers) |
|
static void | createNaturalLoop (LoopInfo &LI, DominatorTree &DT, Loop &L, SetVector< BasicBlock * > &Blocks, SetVector< BasicBlock * > &Headers) |
|
template<class Graph > |
static bool | makeReducible (LoopInfo &LI, DominatorTree &DT, Graph &&G) |
|
static bool | FixIrreducibleImpl (Function &F, LoopInfo &LI, DominatorTree &DT) |
|
◆ DEBUG_TYPE
#define DEBUG_TYPE "fix-irreducible" |
◆ createNaturalLoop() [1/2]
◆ createNaturalLoop() [2/2]
◆ createNaturalLoopInternal()
Definition at line 164 of file FixIrreducible.cpp.
References llvm::LoopBase< BlockT, LoopT >::addChildLoop(), llvm::LoopInfoBase< BlockT, LoopT >::addTopLevelLoop(), llvm::LoopInfoBase< BlockT, LoopT >::AllocateLoop(), assert(), Blocks, llvm::LoopInfoBase< BlockT, LoopT >::changeLoopFor(), llvm::CreateControlFlowHub(), llvm::dbgs(), G, llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), H, llvm::SetVector< T, Vector, Set, N >::insert(), LLVM_DEBUG, P, llvm::predecessors(), reconnectChildLoops(), llvm::LoopInfoBase< BlockT, LoopT >::verify(), llvm::DominatorTreeBase< NodeT, IsPostDom >::verify(), and llvm::LoopBase< BlockT, LoopT >::verifyLoop().
Referenced by createNaturalLoop().
◆ FixIrreducibleImpl()
◆ INITIALIZE_PASS_BEGIN()
INITIALIZE_PASS_BEGIN |
( |
FixIrreducible |
, |
|
|
"fix-irreducible" |
, |
|
|
"Convert irreducible control-flow into natural loops" |
, |
|
|
false |
, |
|
|
false |
|
|
) |
| |
◆ makeReducible()
Definition at line 267 of file FixIrreducible.cpp.
References assert(), Blocks, createNaturalLoop(), llvm::dbgs(), llvm::SetVector< T, Vector, Set, N >::front(), G, llvm::SetVector< T, Vector, Set, N >::insert(), llvm::LoopInfoBase< BlockT, LoopT >::isLoopHeader(), llvm::DominatorTree::isReachableFromEntry(), LLVM_DEBUG, N, P, llvm::predecessors(), llvm::reverse(), llvm::scc_begin(), llvm::SetVector< T, Vector, Set, N >::size(), and unwrapBlock().
Referenced by FixIrreducibleImpl().
◆ reconnectChildLoops()
◆ unwrapBlock() [1/2]
◆ unwrapBlock() [2/2]
◆ false
◆ irreducible
◆ loops