Lines Matching full:bb

120 /// \returns true if \p BB is reachable through only uniform branches.
122 static bool isUniformlyReached(const UniformityInfo &UA, BasicBlock &BB) { in isUniformlyReached() argument
123 SmallVector<BasicBlock *, 8> Stack(predecessors(&BB)); in isUniformlyReached()
163 for (BasicBlock *BB : ReturningBlocks) { in unifyReturnBlockSet()
167 PN->addIncoming(BB->getTerminator()->getOperand(0), BB); in unifyReturnBlockSet()
170 BB->getTerminator()->eraseFromParent(); in unifyReturnBlockSet()
171 BranchInst::Create(NewRetBlock, BB); in unifyReturnBlockSet()
172 Updates.emplace_back(DominatorTree::Insert, BB, NewRetBlock); in unifyReturnBlockSet()
179 for (BasicBlock *BB : ReturningBlocks) { in unifyReturnBlockSet()
181 simplifyCFG(BB, *TTI, RequireAndPreserveDomTree ? &DTU : nullptr, in unifyReturnBlockSet()
216 PDT.roots(), [&](auto BB) { return !isUniformlyReached(UA, *BB); }); in run() argument
218 for (BasicBlock *BB : PDT.roots()) { in run()
219 if (isa<ReturnInst>(BB->getTerminator())) { in run()
221 ReturningBlocks.push_back(BB); in run()
222 } else if (isa<UnreachableInst>(BB->getTerminator())) { in run()
224 UnreachableBlocks.push_back(BB); in run()
225 } else if (BranchInst *BI = dyn_cast<BranchInst>(BB->getTerminator())) { in run()
241 BranchInst::Create(LoopHeaderBB, DummyReturnBB, BoolTrue, BB); in run()
242 Updates.emplace_back(DominatorTree::Insert, BB, DummyReturnBB); in run()
244 SmallVector<BasicBlock *, 2> Successors(successors(BB)); in run()
247 BasicBlock *TransitionBB = BB->splitBasicBlock(BI, "TransitionBlock"); in run()
251 // 'Successors' become successors of TransitionBB instead of BB, in run()
252 // and TransitionBB becomes a single successor of BB. in run()
253 Updates.emplace_back(DominatorTree::Insert, BB, TransitionBB); in run()
256 Updates.emplace_back(DominatorTree::Delete, BB, Successor); in run()
261 BB->getTerminator()->eraseFromParent(); in run()
262 BranchInst::Create(TransitionBB, DummyReturnBB, BoolTrue, BB); in run()
263 Updates.emplace_back(DominatorTree::Insert, BB, DummyReturnBB); in run()
280 for (BasicBlock *BB : UnreachableBlocks) { in run()
282 BB->getTerminator()->eraseFromParent(); in run()
283 BranchInst::Create(UnreachableBlock, BB); in run()
284 Updates.emplace_back(DominatorTree::Insert, BB, UnreachableBlock); in run()