Lines Matching full:flow

58 const char FlowBlockName[] = "Flow";
193 /// Transforms the control flow graph on one single entry/exit region
196 /// After the transform all "If"/"Then"/"Else" style control flow looks like
210 /// | / 3 = "Flow" blocks, newly inserted flow blocks, rejoins the flow
212 /// 5 5 = "End" block, also rejoins the control flow
215 /// Control flow is expressed as a branch where the true exit goes into the
229 /// |/ 2 = "Loop" optional subregion, with all exits at "Flow" block
230 /// 3 3 = "Flow" block, with back edge to entry block
234 /// The back edge of the "Flow" block is always on the false side of the branch
235 /// while the true side continues the general flow. So the loop condition
304 BasicBlock *needPostfix(BasicBlock *Flow, bool ExitUseAllowed);
352 StringRef getPassName() const override { return "Structurize control flow"; }
676 // of B before structurization. F1/F2/F3 are flow blocks inserted during
695 // the block is not a Flow. If a block is neither flow block nor the
849 /// Create a new flow node and update dominator tree and region info
854 BasicBlock *Flow = BasicBlock::Create(Context, FlowBlockName,
856 FlowSet.insert(Flow);
861 TermDL[Flow] = std::move(DL);
863 DT->addNewBlock(Flow, Dominator);
864 ParentRegion->getRegionInfo()->setRegionFor(Flow, ParentRegion);
865 return Flow;
868 /// Create a new or reuse the previous node as flow node
878 // create a new flow node
879 BasicBlock *Flow = getNextFlow(Entry);
882 changeExit(PrevNode, Flow, true);
883 PrevNode = ParentRegion->getBBNode(Flow);
884 return Flow;
887 /// Returns the region exit if possible, otherwise just a new flow node
888 BasicBlock *StructurizeCFG::needPostfix(BasicBlock *Flow,
891 return getNextFlow(Flow);
894 DT->changeImmediateDominator(Exit, Flow);
895 addPhiValues(Flow, Exit);
944 // Just a linear flow
951 BasicBlock *Flow = needPrefix(false);
955 BasicBlock *Next = needPostfix(Flow, ExitUseAllowed);
958 BranchInst *Br = BranchInst::Create(Entry, Next, BoolPoison, Flow);
959 Br->setDebugLoc(TermDL[Flow]);
961 addPhiValues(Flow, Entry);
962 DT->changeImmediateDominator(Entry, Flow);
1006 /// After this function control flow looks like it should be, but
1146 LLVM_DEBUG(dbgs() << "Skipping region with uniform control flow: " << *R