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"; } in getPassName()
676 // of B before structurization. F1/F2/F3 are flow blocks inserted during in findUndefBlocks()
695 // the block is not a Flow. If a block is neither flow block nor the in findUndefBlocks()
849 /// Create a new flow node and update dominator tree and region info
854 BasicBlock *Flow = BasicBlock::Create(Context, FlowBlockName, in getNextFlow() local
856 FlowSet.insert(Flow); in getNextFlow()
861 TermDL[Flow] = std::move(DL); in getNextFlow()
863 DT->addNewBlock(Flow, Dominator); in getNextFlow()
864 ParentRegion->getRegionInfo()->setRegionFor(Flow, ParentRegion); in getNextFlow()
865 return Flow; in getNextFlow()
868 /// Create a new or reuse the previous node as flow node
878 // create a new flow node in needPrefix()
879 BasicBlock *Flow = getNextFlow(Entry); in needPrefix() local
882 changeExit(PrevNode, Flow, true); in needPrefix()
883 PrevNode = ParentRegion->getBBNode(Flow); in needPrefix()
884 return Flow; in needPrefix()
887 /// Returns the region exit if possible, otherwise just a new flow node
888 BasicBlock *StructurizeCFG::needPostfix(BasicBlock *Flow, in needPostfix() argument
891 return getNextFlow(Flow); in needPostfix()
894 DT->changeImmediateDominator(Exit, Flow); in needPostfix()
895 addPhiValues(Flow, Exit); in needPostfix()
944 // Just a linear flow in wireFlow()
951 BasicBlock *Flow = needPrefix(false); in wireFlow() local
955 BasicBlock *Next = needPostfix(Flow, ExitUseAllowed); in wireFlow()
958 BranchInst *Br = BranchInst::Create(Entry, Next, BoolPoison, Flow); in wireFlow()
959 Br->setDebugLoc(TermDL[Flow]); in wireFlow()
961 addPhiValues(Flow, Entry); in wireFlow()
962 DT->changeImmediateDominator(Entry, Flow); in wireFlow()
1006 /// After this function control flow looks like it should be, but
1146 LLVM_DEBUG(dbgs() << "Skipping region with uniform control flow: " << *R in makeUniformRegion()