Lines Matching defs:Invokes
2484 static bool shouldBelongToSameSet(ArrayRef<InvokeInst *> Invokes);
2509 bool CompatibleSets::shouldBelongToSameSet(ArrayRef<InvokeInst *> Invokes) {
2510 assert(Invokes.size() == 2 && "Always called with exactly two candidates.");
2516 if (any_of(Invokes, IsIllegalToMerge))
2522 bool HaveIndirectCalls = any_of(Invokes, IsIndirectCall);
2523 bool AllCallsAreIndirect = all_of(Invokes, IsIndirectCall);
2530 for (InvokeInst *II : Invokes) {
2545 if (any_of(Invokes, HasNormalDest)) {
2548 if (!all_of(Invokes, HasNormalDest))
2553 for (InvokeInst *II : Invokes) {
2564 SmallPtrSet<Value *, 16> EquivalenceSet(Invokes.begin(), Invokes.end());
2566 NormalBB, {Invokes[0]->getParent(), Invokes[1]->getParent()},
2575 for (InvokeInst *II : Invokes) {
2588 Invokes.front()->getUnwindDest(),
2589 {Invokes[0]->getParent(), Invokes[1]->getParent()}))
2594 const InvokeInst *II0 = Invokes.front();
2595 for (auto *II : Invokes.drop_front())
2609 assert(Invokes.size() == 2 && "Always called with exactly two candidates.");
2610 if (any_of(zip(Invokes[0]->data_ops(), Invokes[1]->data_ops()),
2621 static void MergeCompatibleInvokesImpl(ArrayRef<InvokeInst *> Invokes,
2623 assert(Invokes.size() >= 2 && "Must have at least two invokes to merge.");
2627 Updates.reserve(2 + 3 * Invokes.size());
2630 !isa<UnreachableInst>(Invokes[0]->getNormalDest()->getFirstNonPHIOrDbg());
2634 InvokeInst *MergedInvoke = [&Invokes, HasNormalDest]() {
2635 InvokeInst *II0 = Invokes.front();
2666 for (InvokeInst *II : Invokes)
2678 for (InvokeInst *II : Invokes)
2684 bool IsIndirectCall = Invokes[0]->isIndirectCall();
2696 bool NeedPHI = any_of(Invokes, [&U](InvokeInst *II) {
2704 U->getType(), /*NumReservedValues=*/Invokes.size(), "", MergedInvoke->getIterator());
2705 for (InvokeInst *II : Invokes)
2716 /*ExistPred=*/Invokes.front()->getParent());
2722 for (InvokeInst *II : Invokes) {
2785 for (ArrayRef<InvokeInst *> Invokes : Grouper.Sets) {
2786 if (Invokes.size() < 2)
2789 MergeCompatibleInvokesImpl(Invokes, DTU);