Home
last modified time | relevance | path

Searched refs:PredBB (Results 1 – 25 of 59) sorted by relevance

123

/openbsd-src/gnu/llvm/llvm/lib/CodeGen/
H A DTailDuplicator.cpp108 for (MachineBasicBlock *PredBB : Preds) { in VerifyPHIs()
112 if (PHIBB == PredBB) { in VerifyPHIs()
121 << printMBBReference(*PredBB) << '\n'; in VerifyPHIs()
348 MachineInstr *MI, MachineBasicBlock *TailBB, MachineBasicBlock *PredBB, in processPHI() argument
353 unsigned SrcOpIdx = getPHISrcRegOpIdx(MI, PredBB); in processPHI()
365 addSSAUpdateEntry(DefReg, NewDef, PredBB); in processPHI()
382 MachineInstr *MI, MachineBasicBlock *TailBB, MachineBasicBlock *PredBB, in duplicateInstruction() argument
387 BuildMI(*PredBB, PredBB->end(), PredBB->findDebugLoc(PredBB->begin()), in duplicateInstruction()
393 MachineInstr &NewMI = TII->duplicate(*PredBB, PredBB->end(), *MI); in duplicateInstruction()
408 addSSAUpdateEntry(Reg, NewReg, PredBB); in duplicateInstruction()
[all …]
H A DMachineDominators.cpp108 for (MachineBasicBlock *PredBB : Succ->predecessors()) { in applySplitCriticalEdges()
109 if (PredBB == Edge.NewBB) in applySplitCriticalEdges()
123 if (NewBBs.count(PredBB)) { in applySplitCriticalEdges()
124 assert(PredBB->pred_size() == 1 && "A basic block resulting from a " in applySplitCriticalEdges()
127 PredBB = *PredBB->pred_begin(); in applySplitCriticalEdges()
129 if (!DT->dominates(SuccDTNode, DT->getNode(PredBB))) { in applySplitCriticalEdges()
H A DBranchFolding.cpp548 MachineBasicBlock *PredBB, in ProfitableToMerge() argument
586 if ((MBB1 == PredBB || MBB2 == PredBB) && in ProfitableToMerge()
589 unsigned NumTerms = CountTerminators(MBB1 == PredBB ? MBB2 : MBB1, I); in ProfitableToMerge()
634 if (SuccBB && MBB1 != PredBB && MBB2 != PredBB && in ProfitableToMerge()
660 MachineBasicBlock *PredBB) { in ComputeSameTails() argument
673 SuccBB, PredBB, in ComputeSameTails()
695 MachineBasicBlock *PredBB) { in RemoveBlocksWithHash() argument
702 if (SuccBB && CurMBB != PredBB) in RemoveBlocksWithHash()
712 bool BranchFolder::CreateCommonTailOnlyBlock(MachineBasicBlock *&PredBB, in CreateCommonTailOnlyBlock() argument
720 if (SameTails[i].getBlock() == PredBB) { in CreateCommonTailOnlyBlock()
[all …]
H A DBranchFolding.h134 MachineBasicBlock* PredBB,
161 MachineBasicBlock *PredBB);
166 MachineBasicBlock* PredBB);
170 bool CreateCommonTailOnlyBlock(MachineBasicBlock *&PredBB,
H A DMachineSSAUpdater.cpp173 for (MachineBasicBlock *PredBB : BB->predecessors()) { in GetValueInMiddleOfBlock()
174 Register PredVal = GetValueAtEndOfBlockInternal(PredBB, ExistingValueOnly); in GetValueInMiddleOfBlock()
175 PredValues.push_back(std::make_pair(PredBB, PredVal)); in GetValueInMiddleOfBlock()
/openbsd-src/gnu/llvm/llvm/lib/Analysis/
H A DPHITransAddr.cpp144 BasicBlock *PredBB, in PHITranslateSubExpr() argument
169 return AddAsInput(PN->getIncomingValueForBlock(PredBB)); in PHITranslateSubExpr()
189 Value *PHIIn = PHITranslateSubExpr(Cast->getOperand(0), CurBB, PredBB, DT); in PHITranslateSubExpr()
207 (!DT || DT->dominates(CastI->getParent(), PredBB))) in PHITranslateSubExpr()
218 Value *GEPOp = PHITranslateSubExpr(GEP->getOperand(i), CurBB, PredBB, DT); in PHITranslateSubExpr()
246 (!DT || DT->dominates(GEPI->getParent(), PredBB))) { in PHITranslateSubExpr()
262 Value *LHS = PHITranslateSubExpr(Inst->getOperand(0), CurBB, PredBB, DT); in PHITranslateSubExpr()
298 (!DT || DT->dominates(BO->getParent(), PredBB))) in PHITranslateSubExpr()
314 bool PHITransAddr::PHITranslateValue(BasicBlock *CurBB, BasicBlock *PredBB, in PHITranslateValue() argument
319 if (DT && DT->isReachableFromEntry(PredBB)) in PHITranslateValue()
[all …]
H A DLoopNestAnalysis.cpp304 const BasicBlock *PredBB = From; in skipEmptyBlockUntil() local
308 PredBB = BB; in skipEmptyBlockUntil()
312 return (BB == End) ? *End : *PredBB; in skipEmptyBlockUntil()
/openbsd-src/gnu/llvm/llvm/lib/Transforms/Scalar/
H A DJumpThreading.cpp238 auto *PredBB = IncomingBB; in updatePredecessorProfileMetadata() local
242 BranchInst *PredBr = dyn_cast<BranchInst>(PredBB->getTerminator()); in updatePredecessorProfileMetadata()
244 return {PredBB, SuccBB}; in updatePredecessorProfileMetadata()
245 Visited.insert(PredBB); in updatePredecessorProfileMetadata()
246 auto *SinglePredBB = PredBB->getSinglePredecessor(); in updatePredecessorProfileMetadata()
255 SuccBB = PredBB; in updatePredecessorProfileMetadata()
256 PredBB = SinglePredBB; in updatePredecessorProfileMetadata()
277 BasicBlock *PredBB = PredOutEdge.first; in updatePredecessorProfileMetadata() local
278 BranchInst *PredBr = dyn_cast<BranchInst>(PredBB->getTerminator()); in updatePredecessorProfileMetadata()
850 BasicBlock *PredBB = PN->getIncomingBlock(i); in computeValueKnownInPredecessorsImpl() local
[all …]
H A DDivRemPairs.cpp243 BasicBlock *PredBB = nullptr; in optimizeDivRem() local
271 PredBB = RemBB->getUniquePredecessor(); in optimizeDivRem()
289 PredBB = RemPredBB; in optimizeDivRem()
293 if (PredBB && !isa<CatchSwitchInst>(PredBB->getTerminator()) && in optimizeDivRem()
294 isGuaranteedToTransferExecutionToSuccessor(PredBB->getTerminator()) && in optimizeDivRem()
296 all_of(successors(PredBB), in optimizeDivRem()
299 [&](BasicBlock *BB) { return BB == RemBB || BB == PredBB; })) { in optimizeDivRem()
301 DivInst->moveBefore(PredBB->getTerminator()); in optimizeDivRem()
304 RemInst->moveBefore(PredBB->getTerminator()); in optimizeDivRem()
H A DSimpleLoopUnswitch.cpp1545 for (BasicBlock *PredBB : predecessors(BB)) { in buildClonedLoops()
1548 if (!UnloopedBlockSet.erase(PredBB)) { in buildClonedLoops()
1550 (BlocksInClonedLoop.count(PredBB) || ExitLoopMap.count(PredBB)) && in buildClonedLoops()
1558 bool Inserted = ExitLoopMap.insert({PredBB, ExitL}).second; in buildClonedLoops()
1563 Worklist.push_back(PredBB); in buildClonedLoops()
1956 for (BasicBlock *PredBB : predecessors(BB)) { in rebuildLoopAfterUnswitch()
1959 if (!UnloopedBlocks.erase(PredBB)) { in rebuildLoopAfterUnswitch()
1960 assert((NewExitLoopBlocks.count(PredBB) || in rebuildLoopAfterUnswitch()
1961 ExitL.contains(LI.getLoopFor(PredBB))) && in rebuildLoopAfterUnswitch()
1969 bool Inserted = NewExitLoopBlocks.insert(PredBB).second; in rebuildLoopAfterUnswitch()
[all …]
H A DTLSVariableHoist.cpp177 for (BasicBlock *PredBB : predecessors(Header)) in getNearestLoopDomInst()
178 Dom = DT->findNearestCommonDominator(Dom, PredBB); in getNearestLoopDomInst()
/openbsd-src/gnu/llvm/llvm/include/llvm/Analysis/
H A DPHITransAddr.h81 bool PHITranslateValue(BasicBlock *CurBB, BasicBlock *PredBB,
91 Value *PHITranslateWithInsertion(BasicBlock *CurBB, BasicBlock *PredBB,
103 Value *PHITranslateSubExpr(Value *V, BasicBlock *CurBB, BasicBlock *PredBB,
112 BasicBlock *PredBB, const DominatorTree &DT,
H A DLoopInfoImpl.h449 BlockT *PredBB = ReverseCFGWorklist.back(); in discoverAndMapSubloop() local
452 LoopT *Subloop = LI->getLoopFor(PredBB); in discoverAndMapSubloop()
454 if (!DomTree.isReachableFromEntry(PredBB)) in discoverAndMapSubloop()
458 LI->changeLoopFor(PredBB, L); in discoverAndMapSubloop()
460 if (PredBB == L->getHeader()) in discoverAndMapSubloop()
464 InvBlockTraits::child_begin(PredBB), in discoverAndMapSubloop()
465 InvBlockTraits::child_end(PredBB)); in discoverAndMapSubloop()
478 PredBB = Subloop->getHeader(); in discoverAndMapSubloop()
483 for (const auto Pred : children<Inverse<BlockT *>>(PredBB)) { in discoverAndMapSubloop()
/openbsd-src/gnu/llvm/llvm/lib/Target/XCore/
H A DXCoreLowerThreadLocal.cpp88 BasicBlock *PredBB = PN->getIncomingBlock(I); in replaceConstantExprOp() local
89 if (PredBB->getTerminator()->getNumSuccessors() > 1) in replaceConstantExprOp()
90 PredBB = SplitEdge(PredBB, PN->getParent()); in replaceConstantExprOp()
91 Instruction *InsertPos = PredBB->getTerminator(); in replaceConstantExprOp()
/openbsd-src/gnu/llvm/llvm/lib/Transforms/ObjCARC/
H A DDependencyAnalysis.cpp229 BasicBlock *PredBB = *PI; in findDependencies() local
230 if (Visited.insert(PredBB).second) in findDependencies()
231 Worklist.push_back(std::make_pair(PredBB, PredBB->end())); in findDependencies()
/openbsd-src/gnu/llvm/llvm/include/llvm/CodeGen/
H A DTailDuplicator.h82 bool canTailDuplicate(MachineBasicBlock *TailBB, MachineBasicBlock *PredBB);
104 MachineBasicBlock *PredBB,
109 MachineBasicBlock *PredBB,
/openbsd-src/gnu/llvm/llvm/lib/Transforms/Utils/
H A DSSAUpdater.cpp113 BasicBlock *PredBB = SomePhi->getIncomingBlock(i); in GetValueInMiddleOfBlock() local
114 Value *PredVal = GetValueAtEndOfBlock(PredBB); in GetValueInMiddleOfBlock()
115 PredValues.push_back(std::make_pair(PredBB, PredVal)); in GetValueInMiddleOfBlock()
125 for (BasicBlock *PredBB : predecessors(BB)) { in GetValueInMiddleOfBlock()
126 Value *PredVal = GetValueAtEndOfBlock(PredBB); in GetValueInMiddleOfBlock()
127 PredValues.push_back(std::make_pair(PredBB, PredVal)); in GetValueInMiddleOfBlock()
H A DBasicBlockUtils.cpp188 BasicBlock *PredBB = BB->getUniquePredecessor(); in MergeBlockIntoPredecessor() local
189 if (!PredBB) return false; in MergeBlockIntoPredecessor()
192 if (PredBB == BB) return false; in MergeBlockIntoPredecessor()
195 Instruction *PTI = PredBB->getTerminator(); in MergeBlockIntoPredecessor()
200 if (!PredecessorWithTwoSuccessors && PredBB->getUniqueSuccessor() != BB) in MergeBlockIntoPredecessor()
224 << PredBB->getName() << "\n"); in MergeBlockIntoPredecessor()
238 DomTreeNode *PredNode = DT->getNode(PredBB); in MergeBlockIntoPredecessor()
253 SmallPtrSet<BasicBlock *, 2> SuccsOfPredBB(succ_begin(PredBB), in MergeBlockIntoPredecessor()
254 succ_end(PredBB)); in MergeBlockIntoPredecessor()
266 Updates.push_back({DominatorTree::Insert, PredBB, SuccOfBB}); in MergeBlockIntoPredecessor()
[all …]
H A DBreakCriticalEdges.cpp318 for (BasicBlock *PredBB : predecessors(BB)) { in findIBRPredecessor()
319 Instruction *PredTerm = PredBB->getTerminator(); in findIBRPredecessor()
324 IBB = PredBB; in findIBRPredecessor()
328 OtherPreds.push_back(PredBB); in findIBRPredecessor()
H A DLocal.cpp777 BasicBlock *PredBB = DestBB->getSinglePredecessor(); in MergeBasicBlockIntoOnlyPred() local
778 assert(PredBB && "Block doesn't have a single predecessor!"); in MergeBasicBlockIntoOnlyPred()
780 bool ReplaceEntryBB = PredBB->isEntryBlock(); in MergeBasicBlockIntoOnlyPred()
789 Updates.reserve(Updates.size() + 2 * pred_size(PredBB) + 1); in MergeBasicBlockIntoOnlyPred()
790 for (BasicBlock *PredOfPredBB : predecessors(PredBB)) in MergeBasicBlockIntoOnlyPred()
792 if (PredOfPredBB != PredBB) in MergeBasicBlockIntoOnlyPred()
796 for (BasicBlock *PredOfPredBB : predecessors(PredBB)) in MergeBasicBlockIntoOnlyPred()
798 Updates.push_back({DominatorTree::Delete, PredOfPredBB, PredBB}); in MergeBasicBlockIntoOnlyPred()
799 Updates.push_back({DominatorTree::Delete, PredBB, DestBB}); in MergeBasicBlockIntoOnlyPred()
814 PredBB->replaceAllUsesWith(DestBB); in MergeBasicBlockIntoOnlyPred()
[all …]
H A DLoopUnrollRuntime.cpp146 for (BasicBlock *PredBB : predecessors(PrologExit)) in ConnectProlog()
147 if (PrologLoop->contains(PredBB)) in ConnectProlog()
148 PrologExitPreds.push_back(PredBB); in ConnectProlog()
830 auto *PredBB =PN.getIncomingBlock(i); in UnrollRuntimeLoopRemainder() local
831 if (PredBB == Latch) in UnrollRuntimeLoopRemainder()
834 if (!L->contains(PredBB)) in UnrollRuntimeLoopRemainder()
843 PN.addIncoming(V, cast<BasicBlock>(VMap[PredBB])); in UnrollRuntimeLoopRemainder()
H A DCloneFunction.cpp1040 BasicBlock *BB, BasicBlock *PredBB, Instruction *StopAt, in DuplicateInstructionsInSplitBetween() argument
1043 assert(count(successors(PredBB), BB) == 1 && in DuplicateInstructionsInSplitBetween()
1050 ValueMapping[PN] = PN->getIncomingValueForBlock(PredBB); in DuplicateInstructionsInSplitBetween()
1052 BasicBlock *NewBB = SplitEdge(PredBB, BB); in DuplicateInstructionsInSplitBetween()
1053 NewBB->setName(PredBB->getName() + ".split"); in DuplicateInstructionsInSplitBetween()
1058 DTU.applyUpdates({{DominatorTree::Delete, PredBB, BB}, in DuplicateInstructionsInSplitBetween()
1059 {DominatorTree::Insert, PredBB, NewBB}, in DuplicateInstructionsInSplitBetween()
/openbsd-src/gnu/llvm/llvm/lib/Transforms/IPO/
H A DHotColdSplitting.cpp460 BasicBlock &PredBB = **PredIt; in create() local
461 bool SinkPostDom = PDT.dominates(&SinkBB, &PredBB); in create()
465 if (SinkPostDom && pred_empty(&PredBB)) { in create()
472 if (!SinkPostDom || !mayExtractBlock(PredBB)) { in create()
480 unsigned PredScore = getEntryPointScore(PredBB, PredIt.getPathLength()); in create()
482 ColdRegion->SuggestedEntryPoint = &PredBB; in create()
486 addBlockToRegion(&PredBB, PredScore); in create()
H A DBlockExtractor.cpp111 for (auto *PredBB : predecessors(LPad)) { in splitLandingPadPreds() local
112 if (PredBB->isLandingPad() && PredBB != Parent && in splitLandingPadPreds()
/openbsd-src/gnu/llvm/llvm/include/llvm/Transforms/Scalar/
H A DJumpThreading.h120 BasicBlock *PredBB);
146 void threadThroughTwoBasicBlocks(BasicBlock *PredPredBB, BasicBlock *PredBB,
170 void updateBlockFreqAndEdgeWeight(BasicBlock *PredBB, BasicBlock *BB,

123