| /llvm-project-15.0.7/llvm/include/llvm/Transforms/Scalar/ |
| H A D | JumpThreading.h | 29 class BasicBlock; variable 115 void updateSSA(BasicBlock *BB, BasicBlock *NewBB, 124 void threadEdge(BasicBlock *BB, const SmallVectorImpl<BasicBlock *> &PredBBs, 127 BasicBlock *BB, const SmallVectorImpl<BasicBlock *> &PredBBs); 143 Constant *evaluateOnPredecessorEdge(BasicBlock *BB, BasicBlock *PredPredBB, 146 void threadThroughTwoBasicBlocks(BasicBlock *PredPredBB, BasicBlock *PredBB, 147 BasicBlock *BB, BasicBlock *SuccBB); 157 void unfoldSelectInstr(BasicBlock *Pred, BasicBlock *BB, SelectInst *SI, 168 BasicBlock *splitBlockPreds(BasicBlock *BB, ArrayRef<BasicBlock *> Preds, 170 void updateBlockFreqAndEdgeWeight(BasicBlock *PredBB, BasicBlock *BB, [all …]
|
| /llvm-project-15.0.7/llvm/include/llvm/Transforms/Utils/ |
| H A D | BasicBlockUtils.h | 193 BasicBlock *SplitBB, BasicBlock *DestBB); 226 inline BasicBlock * 227 SplitCriticalEdge(BasicBlock *Src, BasicBlock *Dst, 248 BasicBlock *SplitEdge(BasicBlock *From, BasicBlock *To, 258 void updatePhiNodes(BasicBlock *DestBB, BasicBlock *OldPred, 263 BasicBlock *ehAwareSplitEdge(BasicBlock *BB, BasicBlock *Succ, 293 BasicBlock *SplitBlock(BasicBlock *Old, Instruction *SplitPt, 303 BasicBlock *splitBlockBefore(BasicBlock *Old, Instruction *SplitPt, 323 BasicBlock *SplitBlockPredecessors(BasicBlock *BB, ArrayRef<BasicBlock *> Preds, 343 BasicBlock *SplitBlockPredecessors(BasicBlock *BB, ArrayRef<BasicBlock *> Preds, [all …]
|
| H A D | CodeExtractor.h | 26 class BasicBlock; variable 55 DenseSet<BasicBlock *> SideEffectingBlocks; 57 void findSideEffectInfoForBlock(BasicBlock &BB); 98 BasicBlock *AllocationBlock; 104 SetVector<BasicBlock *> Blocks; 110 SmallVector<BasicBlock *, 4> OldTargets; 214 BasicBlock *&ExitBlock) const; 224 BasicBlock *findOrCreateBlockForHoisting(BasicBlock *CommonExitBlock); 250 BasicBlock *header, 251 BasicBlock *newRootNode, BasicBlock *newHeader, [all …]
|
| /llvm-project-15.0.7/llvm/lib/IR/ |
| H A D | BasicBlock.cpp | 70 BasicBlock::~BasicBlock() { in ~BasicBlock() 132 iplist<BasicBlock>::iterator BasicBlock::eraseFromParent() { in eraseFromParent() 136 void BasicBlock::moveBefore(BasicBlock *MovePos) { in moveBefore() 141 void BasicBlock::moveAfter(BasicBlock *MovePos) { in moveAfter() 261 const BasicBlock *BasicBlock::getSinglePredecessor() const { in getSinglePredecessor() 269 const BasicBlock *BasicBlock::getUniquePredecessor() const { in getUniquePredecessor() 291 const BasicBlock *BasicBlock::getSingleSuccessor() const { in getSingleSuccessor() 299 const BasicBlock *BasicBlock::getUniqueSuccessor() const { in getUniqueSuccessor() 313 iterator_range<BasicBlock::phi_iterator> BasicBlock::phis() { in phis() 318 void BasicBlock::removePredecessor(BasicBlock *Pred, in removePredecessor() [all …]
|
| /llvm-project-15.0.7/llvm/include/llvm/IR/ |
| H A D | BasicBlock.h | 79 BasicBlock(const BasicBlock &) = delete; 80 BasicBlock &operator=(const BasicBlock &) = delete; 81 ~BasicBlock(); 246 return const_cast<BasicBlock *>( in getSinglePredecessor() 258 return const_cast<BasicBlock *>( in getUniquePredecessor() 273 BasicBlock *getSingleSuccessor() { in getSingleSuccessor() 319 friend BasicBlock; variable 369 return &BasicBlock::InstList; in getSublistAccess() 455 void replacePhiUsesWith(BasicBlock *Old, BasicBlock *New); 459 void replaceSuccessorsPhiUsesWith(BasicBlock *Old, BasicBlock *New); [all …]
|
| H A D | Dominators.h | 50 extern template class DomTreeNodeBase<BasicBlock>; 54 extern template class cfg::Update<BasicBlock *>; 57 using BBDomTree = DomTreeBase<BasicBlock>; 96 using DomTreeNode = DomTreeNodeBase<BasicBlock>; 99 const BasicBlock *Start; 100 const BasicBlock *End; 103 BasicBlockEdge(const BasicBlock *Start_, const BasicBlock *End_) : in BasicBlockEdge() 106 BasicBlockEdge(const std::pair<BasicBlock *, BasicBlock *> &Pair) in BasicBlockEdge() argument 109 BasicBlockEdge(const std::pair<const BasicBlock *, const BasicBlock *> &Pair) in BasicBlockEdge() argument 112 const BasicBlock *getStart() const { in getStart() [all …]
|
| H A D | CFG.h | 118 inline bool pred_empty(const BasicBlock *BB) { in pred_empty() 126 inline pred_range predecessors(BasicBlock *BB) { in predecessors() 280 inline bool succ_empty(const BasicBlock *BB) { in succ_empty() 286 inline succ_range successors(BasicBlock *BB) { in successors() 300 template <> struct GraphTraits<BasicBlock*> { 301 using NodeRef = BasicBlock *; 310 using NodeRef = const BasicBlock *; 325 using NodeRef = BasicBlock *; 334 using NodeRef = const BasicBlock *; 367 public GraphTraits<const BasicBlock*> { [all …]
|
| H A D | PredIteratorCache.h | 29 mutable DenseMap<BasicBlock *, BasicBlock **> BlockToPredsMap; 30 mutable DenseMap<BasicBlock *, unsigned> BlockToPredCountMap; 42 BasicBlock **GetPreds(BasicBlock *BB) { in GetPreds() 43 BasicBlock **&Entry = BlockToPredsMap[BB]; in GetPreds() 47 SmallVector<BasicBlock *, 32> PredCache(predecessors(BB)); in GetPreds() 52 Entry = Memory.Allocate<BasicBlock *>(PredCache.size()); in GetPreds() 57 unsigned GetNumPreds(BasicBlock *BB) const { in GetNumPreds() 65 size_t size(BasicBlock *BB) const { return GetNumPreds(BB); } in size() 66 ArrayRef<BasicBlock *> get(BasicBlock *BB) { in get()
|
| H A D | Instructions.h | 46 class BasicBlock; variable 3113 BranchInst(BasicBlock *IfTrue, BasicBlock *IfFalse, Value *Cond, 3115 BranchInst(BasicBlock *IfTrue, BasicBlock *InsertAtEnd); 3116 BranchInst(BasicBlock *IfTrue, BasicBlock *IfFalse, Value *Cond, 3135 ptrdiff_t, BasicBlock *, BasicBlock *> { 3138 BasicBlock *operator*() const { return cast<BasicBlock>(*I); } 3151 const BasicBlock *operator*() const { return cast<BasicBlock>(*I); } 3160 static BranchInst *Create(BasicBlock *IfTrue, BasicBlock *IfFalse, 3169 static BranchInst *Create(BasicBlock *IfTrue, BasicBlock *IfFalse, 3682 ptrdiff_t, BasicBlock *, BasicBlock *> { [all …]
|
| /llvm-project-15.0.7/llvm/include/llvm/Analysis/ |
| H A D | MemorySSAUpdater.h | 44 class BasicBlock; variable 89 void removeEdge(BasicBlock *From, BasicBlock *To); 109 void updateForClonedBlockIntoPred(BasicBlock *BB, BasicBlock *P1, 117 ArrayRef<BasicBlock *> ExitBlocks, 145 void moveAllAfterSpliceBlocks(BasicBlock *From, BasicBlock *To, 161 void moveAllAfterMergeBlocks(BasicBlock *From, BasicBlock *To, 169 BasicBlock *Old, BasicBlock *New, ArrayRef<BasicBlock *> Preds, 250 void moveAllAccesses(BasicBlock *From, BasicBlock *To, Instruction *Start); 254 getPreviousDefFromEnd(BasicBlock *, 257 getPreviousDefRecursive(BasicBlock *, [all …]
|
| H A D | BranchProbabilityInfo.h | 167 bool isEdgeHot(const BasicBlock *Src, const BasicBlock *Dst) const; 183 void setEdgeProbability(const BasicBlock *Src, 190 void copyEdgeProbabilities(BasicBlock *Src, BasicBlock *Dst); 202 void eraseBlock(const BasicBlock *BB); 216 using SccMap = DenseMap<const BasicBlock *, int>; 236 int getSCCNum(const BasicBlock *BB) const; 275 BPI->eraseBlock(cast<BasicBlock>(getValPtr())); in deleted() 293 BasicBlock *getBlock() { return const_cast<BasicBlock *>(BB); } in getBlock() 305 const BasicBlock *const BB = nullptr; 405 bool calcMetadataWeights(const BasicBlock *BB); [all …]
|
| H A D | IteratedDominanceFrontier.h | 17 class BasicBlock; variable 22 template <bool IsPostDom> struct ChildrenGetterTy<BasicBlock, IsPostDom> { 23 using NodeRef = BasicBlock *; 24 using ChildrenTy = SmallVector<BasicBlock *, 8>; 33 const GraphDiff<BasicBlock *, IsPostDom> *GD = nullptr; 42 typename llvm::IDFCalculatorBase<BasicBlock, IsPostDom>; 45 IDFCalculator(DominatorTreeBase<BasicBlock, IsPostDom> &DT) 48 IDFCalculator(DominatorTreeBase<BasicBlock, IsPostDom> &DT, 49 const GraphDiff<BasicBlock *, IsPostDom> *GD) 65 typename ChildrenGetterTy<BasicBlock, IsPostDom>::ChildrenTy [all …]
|
| H A D | Interval.h | 27 class BasicBlock; variable 40 BasicBlock *HeaderNode; 43 using succ_iterator = std::vector<BasicBlock*>::iterator; 44 using pred_iterator = std::vector<BasicBlock*>::iterator; 54 std::vector<BasicBlock*> Nodes; 59 std::vector<BasicBlock*> Successors; 63 std::vector<BasicBlock*> Predecessors; 66 inline bool contains(BasicBlock *BB) const { in contains() 67 for (BasicBlock *Node : Nodes) in contains() 76 inline bool isSuccessor(BasicBlock *BB) const { in isSuccessor() [all …]
|
| H A D | CFG.h | 23 class BasicBlock; variable 37 SmallVectorImpl<std::pair<const BasicBlock *, const BasicBlock *> > & 43 unsigned GetSuccessorNumber(const BasicBlock *BB, const BasicBlock *Succ); 51 bool isCriticalEdge(const Instruction *TI, const BasicBlock *Succ, 71 const SmallPtrSetImpl<BasicBlock *> *ExclusionSet = nullptr, 81 const BasicBlock *From, const BasicBlock *To, 82 const SmallPtrSetImpl<BasicBlock *> *ExclusionSet = nullptr, 95 SmallVectorImpl<BasicBlock *> &Worklist, BasicBlock *StopBB, 96 const SmallPtrSetImpl<BasicBlock *> *ExclusionSet,
|
| /llvm-project-15.0.7/llvm/lib/Transforms/Utils/ |
| H A D | FlattenCFG.cpp | 52 bool CompareIfRegionBlock(BasicBlock *Block1, BasicBlock *Block2, 58 bool run(BasicBlock *BB); 141 BasicBlock *LastCondBlock = nullptr; in FlattenParallelAndOr() 142 BasicBlock *FirstCondBlock = nullptr; in FlattenParallelAndOr() 143 BasicBlock *UnCondBlock = nullptr; in FlattenParallelAndOr() 150 BasicBlock *Pred = *PI; in FlattenParallelAndOr() 235 BasicBlock *PS1 = TBB->getSuccessor(0); in FlattenParallelAndOr() 280 BasicBlock *CB; in FlattenParallelAndOr() 323 bool FlattenCFGOpt::CompareIfRegionBlock(BasicBlock *Block1, BasicBlock *Block2, in CompareIfRegionBlock() 413 BasicBlock *IfTrue2, *IfFalse2; in MergeIfRegion() [all …]
|
| H A D | BasicBlockUtils.cpp | 517 BasicBlock *llvm::SplitEdge(BasicBlock *BB, BasicBlock *Succ, DominatorTree *DT, in SplitEdge() 566 void llvm::updatePhiNodes(BasicBlock *DestBB, BasicBlock *OldPred, in updatePhiNodes() 588 BasicBlock *llvm::ehAwareSplitEdge(BasicBlock *BB, BasicBlock *Succ, in ehAwareSplitEdge() 837 BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, in SplitBlock() 1012 static void UpdatePHINodes(BasicBlock *OrigBB, BasicBlock *NewBB, in UpdatePHINodes() 1105 BasicBlock *NewBB = BasicBlock::Create( in SplitBlockPredecessorsImpl() 1174 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors() 1182 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors() 1201 BasicBlock *NewBB1 = BasicBlock::Create(OrigBB->getContext(), in SplitLandingPadPredecessorsImpl() 1628 static std::tuple<Value *, BasicBlock *, BasicBlock *> [all …]
|
| H A D | LoopUnrollRuntime.cpp | 74 BasicBlock *PreHeader, BasicBlock *NewPreHeader, in ConnectProlog() 91 BasicBlock *PrologLatch = cast<BasicBlock>(VMap[Latch]); in ConnectProlog() 193 BasicBlock *Exit, BasicBlock *PreHeader, in ConnectEpilog() 194 BasicBlock *EpilogPreHeader, BasicBlock *NewPreHeader, in ConnectEpilog() 200 BasicBlock *EpilogLatch = cast<BasicBlock>(VMap[Latch]); in ConnectEpilog() 317 BasicBlock *InsertBot, BasicBlock *Preheader, in CloneLoopBlocks() 362 BasicBlock *FirstLoopBB = cast<BasicBlock>(VMap[Header]); in CloneLoopBlocks() 385 BasicBlock *NewLatch = cast<BasicBlock>(VMap[Latch]); in CloneLoopBlocks() 420 Loop *L, SmallVectorImpl<BasicBlock *> &OtherExits, BasicBlock *LatchExit, in canProfitablyUnrollMultiExitLoop() 679 BasicBlock *NewPreHeader; in UnrollRuntimeLoopRemainder() [all …]
|
| /llvm-project-15.0.7/llvm/lib/Analysis/ |
| H A D | CFG.cpp | 35 SmallVectorImpl<std::pair<const BasicBlock*,const BasicBlock*> > &Result) { in FindFunctionBackedges() argument 36 const BasicBlock *BB = &F.getEntryBlock(); in FindFunctionBackedges() 40 SmallPtrSet<const BasicBlock*, 8> Visited; in FindFunctionBackedges() 42 SmallPtrSet<const BasicBlock*, 8> InStack; in FindFunctionBackedges() 49 const BasicBlock *ParentBB = Top.first; in FindFunctionBackedges() 80 const BasicBlock *Succ) { in GetSuccessorNumber() 113 const BasicBlock *FirstPred = *I; in isCriticalEdge() 134 SmallVectorImpl<BasicBlock *> &Worklist, BasicBlock *StopBB, in isPotentiallyReachableFromMany() 208 const BasicBlock *A, const BasicBlock *B, in isPotentiallyReachable() 225 SmallVector<BasicBlock*, 32> Worklist; in isPotentiallyReachable() [all …]
|
| H A D | MemorySSAUpdater.cpp | 37 BasicBlock *BB, in getPreviousDefRecursive() 173 BasicBlock *BB, in getPreviousDefFromEnd() 531 void MemorySSAUpdater::removeEdge(BasicBlock *From, BasicBlock *To) { in removeEdge() 605 void MemorySSAUpdater::cloneUsesAndDefs(BasicBlock *BB, BasicBlock *NewBB, in cloneUsesAndDefs() 638 BasicBlock *Header, BasicBlock *Preheader, BasicBlock *BEBlock) { in updatePhisWhenInsertingUniqueBackedgeBlock() 731 BasicBlock *NewBlock = cast_or_null<BasicBlock>(VMap.lookup(BB)); in updateForClonedLoop() 757 BasicBlock *BB, BasicBlock *P1, const ValueToValueMapTy &VM) { in updateForClonedBlockIntoPred() 916 [&](const SmallSetVector<BasicBlock *, 2> &BBSet) -> BasicBlock * { in applyInsertUpdates() argument 926 [&](BasicBlock *PrevIDom, BasicBlock *CurrIDom, in applyInsertUpdates() 1212 void MemorySSAUpdater::moveAllAccesses(BasicBlock *From, BasicBlock *To, in moveAllAccesses() [all …]
|
| /llvm-project-15.0.7/llvm/lib/Transforms/Scalar/ |
| H A D | StructurizeCFG.cpp | 88 using BB2BBMap = DenseMap<BasicBlock *, BasicBlock *>; 277 void delPhiValues(BasicBlock *From, BasicBlock *To); 279 void addPhiValues(BasicBlock *From, BasicBlock *To); 290 BasicBlock *getNextFlow(BasicBlock *Dominator); 294 BasicBlock *needPostfix(BasicBlock *Flow, bool ExitUseAllowed); 433 BasicBlock *BB = N->getNodeAs<BasicBlock>(); in analyzeLoops() 611 void StructurizeCFG::delPhiValues(BasicBlock *From, BasicBlock *To) { in delPhiValues() 743 BasicBlock *BB = Node->getNodeAs<BasicBlock>(); in changeExit() 753 BasicBlock *StructurizeCFG::getNextFlow(BasicBlock *Dominator) { in getNextFlow() 757 BasicBlock *Flow = BasicBlock::Create(Context, FlowBlockName, in getNextFlow() [all …]
|
| H A D | DFAJumpThreading.cpp | 221 BasicBlock *EndBlock, StringRef NewBBName, BasicBlock **NewBlock, in createBasicBlockAndSinkSelectInst() 290 BasicBlock *TT = EndBlock; in unfold() 291 BasicBlock *FT = EndBlock; in unfold() 350 BasicBlock *BB; 748 BasicBlock *SwitchBlock; 1029 BasicBlock *cloneBlockAndUpdatePredecessor(BasicBlock *BB, BasicBlock *PrevBB, in cloneBlockAndUpdatePredecessor() 1070 void updateSuccessorPhis(BasicBlock *BB, BasicBlock *ClonedBB, in updateSuccessorPhis() 1123 void updatePredecessor(BasicBlock *PrevBB, BasicBlock *OldBB, in updatePredecessor() 1235 BasicBlock *getClonedBB(BasicBlock *BB, uint64_t NextState, in getClonedBB() 1263 bool isPredecessor(BasicBlock *BB, BasicBlock *IncomingBB) { in isPredecessor() [all …]
|
| H A D | LoopSink.cpp | 83 for (BasicBlock *B : BBs) in adjustedSumFreq() 117 static SmallPtrSet<BasicBlock *, 2> 121 SmallPtrSet<BasicBlock *, 2> BBsToSinkInto; in findBBsToSinkInto() 136 for (BasicBlock *ColdestBB : ColdLoopBBs) { in findBBsToSinkInto() 138 for (BasicBlock *SinkedBB : BBsToSinkInto) in findBBsToSinkInto() 153 for (BasicBlock *BB : BBsToSinkInto) { in findBBsToSinkInto() 177 SmallPtrSet<BasicBlock *, 2> BBs; in sinkInstruction() 211 llvm::sort(SortedBBsToSinkInto, [&](BasicBlock *A, BasicBlock *B) { in sinkInstruction() 291 SmallVector<BasicBlock *, 10> ColdLoopBBs; in sinkLoopInvariantInstructions() 294 for (BasicBlock *B : L.blocks()) in sinkLoopInvariantInstructions() [all …]
|
| /llvm-project-15.0.7/clang/lib/Analysis/ |
| H A D | ThreadSafetyTIL.cpp | 58 unsigned BasicBlock::addPredecessor(BasicBlock *Pred) { in addPredecessor() 165 unsigned BasicBlock::topologicalSort(SimpleArray<BasicBlock *> &Blocks, in topologicalSort() 189 unsigned BasicBlock::topologicalFinalSort(SimpleArray<BasicBlock *> &Blocks, in topologicalFinalSort() 208 void BasicBlock::computeDominator() { in computeDominator() 209 BasicBlock *Candidate = nullptr; in computeDominator() 235 void BasicBlock::computePostDominator() { in computePostDominator() 236 BasicBlock *Candidate = nullptr; in computePostDominator() 267 BasicBlock::TopologyNode BasicBlock::*TN) { in computeNodeSize() 268 BasicBlock::TopologyNode *N = &(B->*TN); in computeNodeSize() 278 BasicBlock::TopologyNode BasicBlock::*TN) { in computeNodeID() [all …]
|
| /llvm-project-15.0.7/llvm/lib/Target/AMDGPU/ |
| H A D | AMDGPUUnifyDivergentExitNodes.cpp | 118 BasicBlock &BB) { in isUniformlyReached() 120 SmallPtrSet<BasicBlock *, 8> Visited; in isUniformlyReached() 123 BasicBlock *Top = Stack.pop_back_val(); in isUniformlyReached() 127 for (BasicBlock *Pred : predecessors(Top)) { in isUniformlyReached() 142 BasicBlock *NewRetBlock = BasicBlock::Create(F.getContext(), Name, &F); in unifyReturnBlockSet() 159 for (BasicBlock *BB : ReturningBlocks) { in unifyReturnBlockSet() 175 for (BasicBlock *BB : ReturningBlocks) { in unifyReturnBlockSet() 200 SmallVector<BasicBlock *, 4> ReturningBlocks; in runOnFunction() 204 BasicBlock *DummyReturnBB = nullptr; in runOnFunction() 209 for (BasicBlock *BB : PDT.roots()) { in runOnFunction() [all …]
|
| /llvm-project-15.0.7/llvm/lib/CodeGen/ |
| H A D | WinEHPrepare.cpp | 100 MapVector<BasicBlock *, std::vector<BasicBlock *>> FuncletBlocks; 179 for (BasicBlock &BB : *F) { in calculateStateNumbersForInvokes() 188 BasicBlock *FuncletUnwindDest; in calculateStateNumbersForInvokes() 221 static const BasicBlock *getEHPadFromPredecessor(const BasicBlock *BB, in getEHPadFromPredecessor() 457 for (const BasicBlock &BB : *Fn) { in calculateSEHStateNumbers() 608 const BasicBlock *UnwindDest; in calculateClrEHStateNumbers() 703 for (BasicBlock &BB : F) { in colorFunclets() 754 std::vector<std::pair<BasicBlock *, BasicBlock *>> Orig2Clone; in cloneCommonBlocks() 769 BasicBlock *CBB = in cloneCommonBlocks() 1036 for (BasicBlock &BB : F) { in verifyPreparedFunclets() [all …]
|