Lines Matching full:multiple
52 "relooper-multiple-switch-threshold",
54 "How many entries to allow in a multiple before we use a switch"),
227 // If a block has multiple entries but no exits, and it is small enough, it
332 if (MultipleShape *Multiple = dyn_cast<MultipleShape>(Ancestor))
333 Multiple->Breaks++; // We are breaking out of this Multiple, so need a
536 MultipleShape *Multiple = new MultipleShape();
537 Notice(Multiple);
556 Solipsize(CurrTarget, Branch::Break, Multiple, CurrBlocks);
561 Multiple->InnerMap[CurrEntry->Id] =
571 // The multiple has been created, we can decide how to implement it
572 if (Multiple->InnerMap.size() >= RelooperMultipleSwitchThreshold) {
573 Multiple->UseSwitch = true;
574 Multiple->Breaks++; // switch captures breaks
576 return Multiple;
625 // More than one entry, try to eliminate through a Multiple groups of
633 // We can handle a group in a multiple if its entry cannot be reached
636 // fine, we will create a loop inside the multiple block (which
703 // Some groups removable ==> Multiple
742 std::function<void (MultipleShape*)> multiple,
750 multiple(cast<MultipleShape>(var));
761 // through a multiple that we ignore
765 }, [&](MultipleShape* Multiple) {
766 for (const auto &iter : Multiple->InnerMap) {
769 FollowNaturalFlow(Multiple->Next, Out);
784 }, [&](MultipleShape* Multiple) {
785 for (const auto &iter : Multiple->InnerMap) {
848 if (MultipleShape *Multiple =
850 Multiple->Breaks--;
872 if (MultipleShape *Multiple =
874 Multiple->Breaks--;
880 if (MultipleShape *Multiple =
882 Multiple->Breaks--;
886 }, [&](MultipleShape* Multiple)
888 for (const auto &iter : Multiple->InnerMap) {
889 RemoveUnneededFlows(iter.second, Multiple->Next,
890 Multiple->Breaks ? nullptr : LastLoop,
893 Next = Multiple->Next;
914 // If we are fusing a Multiple with a loop into this Simple, then
935 if (MultipleShape *Multiple =
937 Multiple->Labeled = true;
958 , [&](MultipleShape* Multiple) {
959 if (Multiple->Breaks)
960 LoopStack.push(Multiple);
961 for (const auto &iter : Multiple->InnerMap)
963 if (Multiple->Breaks)