Home | History | Annotate | Download | only in Scalar

Lines Matching refs:Flow

49 static const char *const FlowBlockName = "Flow";
114 /// @brief Transforms the control flow graph on one single entry/exit region
117 /// After the transform all "If"/"Then"/"Else" style control flow looks like
131 /// | / 3 = "Flow" blocks, newly inserted flow blocks, rejoins the flow
133 /// 5 5 = "End" block, also rejoins the control flow
136 /// Control flow is expressed as a branch where the true exit goes into the
150 /// |/ 2 = "Loop" optional subregion, with all exits at "Flow" block
151 /// 3 3 = "Flow" block, with back edge to entry block
155 /// The back edge of the "Flow" block is always on the false side of the branch
156 /// while the true side continues the general flow. So the loop condition
214 BasicBlock *needPostfix(BasicBlock *Flow, bool ExitUseAllowed);
244 return "Structurize control flow";
633 /// \brief Create a new flow node and update dominator tree and region info
638 BasicBlock *Flow = BasicBlock::Create(Context, FlowBlockName,
640 DT->addNewBlock(Flow, Dominator);
641 ParentRegion->getRegionInfo()->setRegionFor(Flow, ParentRegion);
642 return Flow;
645 /// \brief Create a new or reuse the previous node as flow node
656 // create a new flow node
657 BasicBlock *Flow = getNextFlow(Entry);
660 changeExit(PrevNode, Flow, true);
661 PrevNode = ParentRegion->getBBNode(Flow);
662 return Flow;
665 /// \brief Returns the region exit if possible, otherwise just a new flow node
666 BasicBlock *StructurizeCFG::needPostfix(BasicBlock *Flow,
670 DT->changeImmediateDominator(Exit, Flow);
671 addPhiValues(Flow, Exit);
674 return getNextFlow(Flow);
725 // Just a linear flow
733 BasicBlock *Flow = needPrefix(false);
737 BasicBlock *Next = needPostfix(Flow, ExitUseAllowed);
740 Conditions.push_back(BranchInst::Create(Entry, Next, BoolUndef, Flow));
741 addPhiValues(Flow, Entry);
742 DT->changeImmediateDominator(Entry, Flow);
797 /// After this function control flow looks like it should be, but