Lines Matching refs:PredBB
169 auto *PredBB = IncomingBB; in updatePredecessorProfileMetadata() local
173 BranchInst *PredBr = dyn_cast<BranchInst>(PredBB->getTerminator()); in updatePredecessorProfileMetadata()
175 return {PredBB, SuccBB}; in updatePredecessorProfileMetadata()
176 Visited.insert(PredBB); in updatePredecessorProfileMetadata()
177 auto *SinglePredBB = PredBB->getSinglePredecessor(); in updatePredecessorProfileMetadata()
186 SuccBB = PredBB; in updatePredecessorProfileMetadata()
187 PredBB = SinglePredBB; in updatePredecessorProfileMetadata()
208 BasicBlock *PredBB = PredOutEdge.first; in updatePredecessorProfileMetadata() local
209 BranchInst *PredBr = dyn_cast<BranchInst>(PredBB->getTerminator()); in updatePredecessorProfileMetadata()
764 BasicBlock *PredBB = PN->getIncomingBlock(i); in computeValueKnownInPredecessorsImpl() local
768 RHS = CmpRHS->DoPHITranslation(BB, PredBB); in computeValueKnownInPredecessorsImpl()
770 LHS = CmpLHS->DoPHITranslation(BB, PredBB); in computeValueKnownInPredecessorsImpl()
785 cast<Constant>(RHS), PredBB, BB, in computeValueKnownInPredecessorsImpl()
793 Result.emplace_back(KC, PredBB); in computeValueKnownInPredecessorsImpl()
1309 for (BasicBlock *PredBB : predecessors(LoadBB)) { in simplifyPartiallyRedundantLoad()
1311 if (!PredsScanned.insert(PredBB).second) in simplifyPartiallyRedundantLoad()
1314 BBIt = PredBB->end(); in simplifyPartiallyRedundantLoad()
1325 MemoryLocation Loc(LoadedPtr->DoPHITranslation(LoadBB, PredBB), in simplifyPartiallyRedundantLoad()
1329 Loc, AccessTy, LoadI->isAtomic(), PredBB, BBIt, DefMaxInstsToScan, in simplifyPartiallyRedundantLoad()
1334 BasicBlock *SinglePredBB = PredBB; in simplifyPartiallyRedundantLoad()
1348 OneUnavailablePred = PredBB; in simplifyPartiallyRedundantLoad()
1357 AvailablePreds.emplace_back(PredBB, PredAvailable); in simplifyPartiallyRedundantLoad()
1516 BasicBlock *PredBB = BB->getSinglePredecessor(); in evaluateOnPredecessorEdge() local
1517 assert(PredBB && "Expected a single predecessor"); in evaluateOnPredecessorEdge()
1525 if (!I || (I->getParent() != BB && I->getParent() != PredBB)) { in evaluateOnPredecessorEdge()
1526 return LVI->getConstantOnEdge(V, PredPredBB, PredBB, nullptr); in evaluateOnPredecessorEdge()
1531 if (PHI->getParent() == PredBB) in evaluateOnPredecessorEdge()
1749 BasicBlock *PredBB = PN->getIncomingBlock(i); in processBranchOnPHI() local
1750 if (BranchInst *PredBr = dyn_cast<BranchInst>(PredBB->getTerminator())) in processBranchOnPHI()
1752 PredBBs[0] = PredBB; in processBranchOnPHI()
2017 BasicBlock *PredBB) { in cloneInstructions() argument
2072 NewPN->addIncoming(PN->getIncomingValueForBlock(PredBB), PredBB); in cloneInstructions()
2081 LLVMContext &Context = PredBB->getContext(); in cloneInstructions()
2154 BasicBlock *PredBB = BB->getSinglePredecessor(); in maybethreadThroughTwoBasicBlocks() local
2155 if (!PredBB) in maybethreadThroughTwoBasicBlocks()
2161 BranchInst *PredBBBranch = dyn_cast<BranchInst>(PredBB->getTerminator()); in maybethreadThroughTwoBasicBlocks()
2167 if (PredBB->getSinglePredecessor()) in maybethreadThroughTwoBasicBlocks()
2179 if (llvm::is_contained(successors(PredBB), PredBB)) in maybethreadThroughTwoBasicBlocks()
2183 if (LoopHeaders.count(PredBB)) in maybethreadThroughTwoBasicBlocks()
2187 if (PredBB->isEHPad()) in maybethreadThroughTwoBasicBlocks()
2197 for (BasicBlock *P : predecessors(PredBB)) { in maybethreadThroughTwoBasicBlocks()
2252 TTI, PredBB, PredBB->getTerminator(), BBDupThreshold); in maybethreadThroughTwoBasicBlocks()
2266 threadThroughTwoBasicBlocks(PredPredBB, PredBB, BB, SuccBB); in maybethreadThroughTwoBasicBlocks()
2271 BasicBlock *PredBB, in threadThroughTwoBasicBlocks() argument
2274 LLVM_DEBUG(dbgs() << " Threading through '" << PredBB->getName() << "' and '" in threadThroughTwoBasicBlocks()
2283 BranchInst *PredBBBranch = cast<BranchInst>(PredBB->getTerminator()); in threadThroughTwoBasicBlocks()
2286 BasicBlock::Create(PredBB->getContext(), PredBB->getName() + ".thread", in threadThroughTwoBasicBlocks()
2287 PredBB->getParent(), PredBB); in threadThroughTwoBasicBlocks()
2288 NewBB->moveAfter(PredBB); in threadThroughTwoBasicBlocks()
2294 BPI->getEdgeProbability(PredPredBB, PredBB); in threadThroughTwoBasicBlocks()
2302 cloneInstructions(PredBB->begin(), PredBB->end(), NewBB, PredPredBB); in threadThroughTwoBasicBlocks()
2306 BPI->copyEdgeProbabilities(PredBB, NewBB); in threadThroughTwoBasicBlocks()
2313 if (PredPredTerm->getSuccessor(i) == PredBB) { in threadThroughTwoBasicBlocks()
2314 PredBB->removePredecessor(PredPredBB, true); in threadThroughTwoBasicBlocks()
2318 addPHINodeEntriesForMappedBlock(PredBBBranch->getSuccessor(0), PredBB, NewBB, in threadThroughTwoBasicBlocks()
2320 addPHINodeEntriesForMappedBlock(PredBBBranch->getSuccessor(1), PredBB, NewBB, in threadThroughTwoBasicBlocks()
2327 {DominatorTree::Delete, PredPredBB, PredBB}}); in threadThroughTwoBasicBlocks()
2329 updateSSA(PredBB, NewBB, ValueMapping); in threadThroughTwoBasicBlocks()
2334 SimplifyInstructionsInBlock(PredBB, TLI); in threadThroughTwoBasicBlocks()
2395 BasicBlock *PredBB; in threadEdge() local
2397 PredBB = PredBBs[0]; in threadEdge()
2401 PredBB = splitBlockPreds(BB, PredBBs, ".thr_comm"); in threadEdge()
2405 LLVM_DEBUG(dbgs() << " Threading edge from '" << PredBB->getName() in threadEdge()
2409 LVI->threadEdge(PredBB, BB, SuccBB); in threadEdge()
2414 NewBB->moveAfter(PredBB); in threadEdge()
2420 BFI->getBlockFreq(PredBB) * BPI->getEdgeProbability(PredBB, BB); in threadEdge()
2426 cloneInstructions(BB->begin(), std::prev(BB->end()), NewBB, PredBB); in threadEdge()
2440 Instruction *PredTerm = PredBB->getTerminator(); in threadEdge()
2443 BB->removePredecessor(PredBB, true); in threadEdge()
2449 {DominatorTree::Insert, PredBB, NewBB}, in threadEdge()
2450 {DominatorTree::Delete, PredBB, BB}}); in threadEdge()
2460 updateBlockFreqAndEdgeWeight(PredBB, BB, NewBB, SuccBB, BFI, BPI, HasProfile); in threadEdge()
2524 void JumpThreadingPass::updateBlockFreqAndEdgeWeight(BasicBlock *PredBB, in updateBlockFreqAndEdgeWeight() argument
2650 BasicBlock *PredBB; in duplicateCondBranchOnPHIIntoPred() local
2652 PredBB = PredBBs[0]; in duplicateCondBranchOnPHIIntoPred()
2656 PredBB = splitBlockPreds(BB, PredBBs, ".thr_comm"); in duplicateCondBranchOnPHIIntoPred()
2658 Updates.push_back({DominatorTree::Delete, PredBB, BB}); in duplicateCondBranchOnPHIIntoPred()
2663 << "' into end of '" << PredBB->getName() in duplicateCondBranchOnPHIIntoPred()
2669 BranchInst *OldPredBranch = dyn_cast<BranchInst>(PredBB->getTerminator()); in duplicateCondBranchOnPHIIntoPred()
2672 BasicBlock *OldPredBB = PredBB; in duplicateCondBranchOnPHIIntoPred()
2673 PredBB = SplitEdge(OldPredBB, BB); in duplicateCondBranchOnPHIIntoPred()
2674 Updates.push_back({DominatorTree::Insert, OldPredBB, PredBB}); in duplicateCondBranchOnPHIIntoPred()
2675 Updates.push_back({DominatorTree::Insert, PredBB, BB}); in duplicateCondBranchOnPHIIntoPred()
2677 OldPredBranch = cast<BranchInst>(PredBB->getTerminator()); in duplicateCondBranchOnPHIIntoPred()
2686 ValueMapping[PN] = PN->getIncomingValueForBlock(PredBB); in duplicateCondBranchOnPHIIntoPred()
2691 New->insertInto(PredBB, OldPredBranch->getIterator()); in duplicateCondBranchOnPHIIntoPred()
2726 Updates.push_back({DominatorTree::Insert, PredBB, SuccBB}); in duplicateCondBranchOnPHIIntoPred()
2733 addPHINodeEntriesForMappedBlock(BBBranch->getSuccessor(0), BB, PredBB, in duplicateCondBranchOnPHIIntoPred()
2735 addPHINodeEntriesForMappedBlock(BBBranch->getSuccessor(1), BB, PredBB, in duplicateCondBranchOnPHIIntoPred()
2738 updateSSA(BB, PredBB, ValueMapping); in duplicateCondBranchOnPHIIntoPred()
2742 BB->removePredecessor(PredBB, true); in duplicateCondBranchOnPHIIntoPred()
2747 BPI->copyEdgeProbabilities(BB, PredBB); in duplicateCondBranchOnPHIIntoPred()