| /freebsd/contrib/llvm-project/llvm/include/llvm/IR/ |
| H A D | BasicBlock.h | 61 class BasicBlock final : public Value, // Basic blocks are data objects also 62 public ilist_node_with_parent<BasicBlock, Function> { 65 ilist_parent<BasicBlock>>; 74 friend class SymbolTableListTraits<BasicBlock>; 157 LLVM_ABI explicit BasicBlock(LLVMContext &C, const Twine &Name = "", 159 BasicBlock *InsertBefore = nullptr); 162 BasicBlock(const BasicBlock &) = delete; 163 BasicBlock &operator=(const BasicBlock &) = delete; 164 LLVM_ABI ~BasicBlock(); 177 friend BasicBlock::iterator Instruction::eraseFromParent(); [all …]
|
| H A D | CFG.h | 105 using pred_iterator = PredIterator<BasicBlock, Value::user_iterator>; 107 PredIterator<const BasicBlock, Value::const_user_iterator>; 111 inline pred_iterator pred_begin(BasicBlock *BB) { return pred_iterator(BB); } in pred_begin() 112 inline const_pred_iterator pred_begin(const BasicBlock *BB) { in pred_begin() 115 inline pred_iterator pred_end(BasicBlock *BB) { return pred_iterator(BB, true);} in pred_end() 116 inline const_pred_iterator pred_end(const BasicBlock *BB) { in pred_end() 119 inline bool pred_empty(const BasicBlock *BB) { in pred_empty() 124 inline unsigned pred_size(const BasicBlock *BB) { in pred_size() 127 inline pred_range predecessors(BasicBlock *BB) { in predecessors() 130 inline const_pred_range predecessors(const BasicBlock *BB) { in predecessors() [all …]
|
| H A D | Dominators.h | 47 extern template class LLVM_TEMPLATE_ABI DomTreeNodeBase<BasicBlock>; 49 DominatorTreeBase<BasicBlock, false>; // DomTree 51 DominatorTreeBase<BasicBlock, true>; // PostDomTree 53 extern template class cfg::Update<BasicBlock *>; 56 using BBDomTree = DomTreeBase<BasicBlock>; 57 using BBPostDomTree = PostDomTreeBase<BasicBlock>; 59 using BBUpdates = ArrayRef<llvm::cfg::Update<BasicBlock *>>; 61 using BBDomTreeGraphDiff = GraphDiff<BasicBlock *, false>; 62 using BBPostDomTreeGraphDiff = GraphDiff<BasicBlock *, true>; 72 InsertEdge<BBDomTree>(BBDomTree &DT, BasicBlock *From, BasicBlock *To); [all …]
|
| /freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/ |
| H A D | JumpThreading.h | 33 class BasicBlock; variable 56 using PredValueInfo = SmallVectorImpl<std::pair<Constant *, BasicBlock *>>; 57 using PredValueInfoTy = SmallVector<std::pair<Constant *, BasicBlock *>, 8>; 93 SmallSet<AssertingVH<const BasicBlock>, 16> LoopHeaders; 95 SmallPtrSet<const BasicBlock *, 16> LoopHeaders; 100 SmallPtrSet<BasicBlock *, 16> Unreachable; 119 LLVM_ABI bool processBlock(BasicBlock *BB); 120 LLVM_ABI bool maybeMergeBasicBlockIntoOnlyPred(BasicBlock *BB); 121 LLVM_ABI void updateSSA(BasicBlock *BB, BasicBlock *NewBB, 124 BasicBlock::iterator BI, [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/IR/ |
| H A D | BasicBlock.cpp | 33 DbgMarker *BasicBlock::createMarker(Instruction *I) { in createMarker() 42 DbgMarker *BasicBlock::createMarker(InstListType::iterator It) { in createMarker() 53 void BasicBlock::convertToNewDbgValues() { in convertToNewDbgValues() 89 void BasicBlock::convertFromNewDbgValues() { in convertFromNewDbgValues() 114 void BasicBlock::dumpDbgValues() const { in dumpDbgValues() 125 ValueSymbolTable *BasicBlock::getValueSymbolTable() { in getValueSymbolTable() 131 LLVMContext &BasicBlock::getContext() const { in getContext() 135 template <> void llvm::invalidateParentIListOrdering(BasicBlock *BB) { in invalidateParentIListOrdering() 142 Instruction, ilist_iterator_bits<true>, ilist_parent<BasicBlock>>; 144 BasicBlock::BasicBlock(LLVMContext &C, const Twine &Name, Function *NewParent, in BasicBlock() function in BasicBlock [all …]
|
| H A D | Dominators.cpp | 54 for (const BasicBlock *Succ : successors(Start)) { in isSingleEdge() 74 template class LLVM_EXPORT_TEMPLATE llvm::DomTreeNodeBase<BasicBlock>; 76 llvm::DominatorTreeBase<BasicBlock, false>; // DomTreeBase 78 llvm::DominatorTreeBase<BasicBlock, true>; // PostDomTreeBase 80 template class llvm::cfg::Update<BasicBlock *>; 96 DomTreeBuilder::BBDomTree &DT, BasicBlock *From, BasicBlock *To); 99 DomTreeBuilder::BBPostDomTree &DT, BasicBlock *From, BasicBlock *To); 103 DomTreeBuilder::BBDomTree &DT, BasicBlock *From, BasicBlock *To); 106 DomTreeBuilder::BBPostDomTree &DT, BasicBlock *From, BasicBlock *To); 135 bool DominatorTree::dominates(const BasicBlock *BB, const Use &U) const { in dominates() [all …]
|
| /freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Utils/ |
| H A D | BasicBlockUtils.h | 51 detachDeadBlocks(ArrayRef<BasicBlock *> BBs, 56 LLVM_ABI void DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU = nullptr, 65 LLVM_ABI void DeleteDeadBlocks(ArrayRef<BasicBlock *> BBs, 81 FoldSingleEntryPHINodes(BasicBlock *BB, 88 LLVM_ABI bool DeleteDeadPHIs(BasicBlock *BB, 102 BasicBlock *BB, DomTreeUpdater *DTU = nullptr, LoopInfo *LI = nullptr, 115 SmallPtrSetImpl<BasicBlock *> &MergeBlocks, Loop *L = nullptr, 121 LLVM_ABI bool RemoveRedundantDbgInstrs(BasicBlock *BB); 125 LLVM_ABI void ReplaceInstWithValue(BasicBlock::iterator &BI, Value *V); 131 LLVM_ABI void ReplaceInstWithInst(BasicBlock *BB, BasicBlock::iterator &BI, [all …]
|
| H A D | CodeExtractor.h | 27 class BasicBlock; variable 52 DenseMap<BasicBlock *, DenseSet<Value *>> BaseMemAddrs; 56 DenseSet<BasicBlock *> SideEffectingBlocks; 58 void findSideEffectInfoForBlock(BasicBlock &BB); 70 LLVM_ABI bool doesBlockContainClobberOfAddr(BasicBlock &BB, 100 BasicBlock *AllocationBlock; 106 SetVector<BasicBlock *> Blocks; 125 SmallVector<BasicBlock *> ExtractedFuncRetVals; 154 CodeExtractor(ArrayRef<BasicBlock *> BBs, DominatorTree *DT = nullptr, 159 BasicBlock *AllocationBlock = nullptr, [all …]
|
| H A D | ControlFlowUtils.h | 21 class BasicBlock; variable 99 BasicBlock *BB; 100 BasicBlock *Succ0; 101 BasicBlock *Succ1; 103 BranchDescriptor(BasicBlock *BB, BasicBlock *Succ0, BasicBlock *Succ1) in BranchDescriptor() 107 void addBranch(BasicBlock *BB, BasicBlock *Succ0, BasicBlock *Succ1) { in addBranch() 115 std::pair<BasicBlock *, bool> 116 finalize(DomTreeUpdater *DTU, SmallVectorImpl<BasicBlock *> &GuardBlocks,
|
| /freebsd/contrib/llvm-project/llvm/include/llvm/Analysis/ |
| H A D | MemorySSAUpdater.h | 45 class BasicBlock; variable 53 using CFGUpdate = cfg::Update<BasicBlock *>; 63 SmallPtrSet<BasicBlock *, 8> VisitedBlocks; 90 LLVM_ABI void removeEdge(BasicBlock *From, BasicBlock *To); 94 LLVM_ABI void removeDuplicatePhiEdgesBetween(const BasicBlock *From, 95 const BasicBlock *To); 98 updatePhisWhenInsertingUniqueBackedgeBlock(BasicBlock *LoopHeader, 99 BasicBlock *LoopPreheader, 100 BasicBlock *BackedgeBlock); 106 ArrayRef<BasicBlock *> ExitBlocks, [all …]
|
| H A D | BranchProbabilityInfo.h | 159 getEdgeProbability(const BasicBlock *Src, unsigned IndexInSuccessors) const; 164 LLVM_ABI BranchProbability getEdgeProbability(const BasicBlock *Src, 165 const BasicBlock *Dst) const; 167 LLVM_ABI BranchProbability getEdgeProbability(const BasicBlock *Src, 174 LLVM_ABI bool isEdgeHot(const BasicBlock *Src, const BasicBlock *Dst) const; 182 const BasicBlock *Src, 183 const BasicBlock *Dst) const; 192 setEdgeProbability(const BasicBlock *Src, 199 LLVM_ABI void copyEdgeProbabilities(BasicBlock *Src, BasicBlock *Dst); 202 LLVM_ABI void swapSuccEdgesProbabilities(const BasicBlock *Src); [all …]
|
| H A D | CFG.h | 24 class BasicBlock; variable 38 SmallVectorImpl<std::pair<const BasicBlock *, const BasicBlock *>> &Result); 43 LLVM_ABI unsigned GetSuccessorNumber(const BasicBlock *BB, 44 const BasicBlock *Succ); 52 LLVM_ABI bool isCriticalEdge(const Instruction *TI, const BasicBlock *Succ, 72 const SmallPtrSetImpl<BasicBlock *> *ExclusionSet = nullptr, 82 const BasicBlock *From, const BasicBlock *To, 83 const SmallPtrSetImpl<BasicBlock *> *ExclusionSet = nullptr, 96 SmallVectorImpl<BasicBlock *> &Worklist, const BasicBlock *StopBB, 97 const SmallPtrSetImpl<BasicBlock *> *ExclusionSet, [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>; 27 ChildrenGetterTy(const GraphDiff<BasicBlock *, IsPostDom> *GD) : GD(GD) { 33 const GraphDiff<BasicBlock *, IsPostDom> *GD = nullptr; 39 class IDFCalculator final : public IDFCalculatorBase<BasicBlock, IsPostDom> { 42 typename llvm::IDFCalculatorBase<BasicBlock, IsPostDom>; 45 IDFCalculator(DominatorTreeBase<BasicBlock, IsPostDom> &DT) 48 IDFCalculator(DominatorTreeBase<BasicBlock, IsPostDom> &DT, [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Analysis/ |
| H A D | CFG.cpp | 36 SmallVectorImpl<std::pair<const BasicBlock*,const BasicBlock*> > &Result) { in FindFunctionBackedges() argument 37 const BasicBlock *BB = &F.getEntryBlock(); in FindFunctionBackedges() 41 SmallPtrSet<const BasicBlock*, 8> Visited; in FindFunctionBackedges() 42 SmallVector<std::pair<const BasicBlock *, const_succ_iterator>, 8> VisitStack; in FindFunctionBackedges() 43 SmallPtrSet<const BasicBlock*, 8> InStack; in FindFunctionBackedges() 49 std::pair<const BasicBlock *, const_succ_iterator> &Top = VisitStack.back(); in FindFunctionBackedges() 50 const BasicBlock *ParentBB = Top.first; in FindFunctionBackedges() 80 unsigned llvm::GetSuccessorNumber(const BasicBlock *BB, in GetSuccessorNumber() 81 const BasicBlock *Succ) { in GetSuccessorNumber() 102 bool llvm::isCriticalEdge(const Instruction *TI, const BasicBlock *Dest, in isCriticalEdge() [all …]
|
| H A D | MemorySSAUpdater.cpp | 37 BasicBlock *BB, in getPreviousDefRecursive() 38 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &CachedPreviousDef) { in getPreviousDefRecursive() argument 49 if (BasicBlock *Pred = BB->getUniquePredecessor()) { in getPreviousDefRecursive() 140 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> CachedPreviousDef; in getPreviousDef() 173 BasicBlock *BB, in getPreviousDefFromEnd() 174 DenseMap<BasicBlock *, TrackingVH<MemoryAccess>> &CachedPreviousDef) { in getPreviousDefFromEnd() argument 264 SmallPtrSet<BasicBlock *, 16> Visited; in insertUse() 265 BasicBlock *StartBlock = MU->getBlock(); in insertUse() 285 static void setMemoryPhiValueForBlock(MemoryPhi *MP, const BasicBlock *BB, in setMemoryPhiValueForBlock() 293 for (const BasicBlock *BlockBB : llvm::drop_begin(MP->blocks(), i)) { in setMemoryPhiValueForBlock() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Target/SPIRV/ |
| H A D | SPIRVStructurizer.cpp | 38 using BlockSet = std::unordered_set<BasicBlock *>; 39 using Edge = std::pair<BasicBlock *, BasicBlock *>; 43 static void partialOrderVisit(BasicBlock &Start, in partialOrderVisit() 44 std::function<bool(BasicBlock *)> Op) { in partialOrderVisit() 52 getRegionForHeader(const ConvergenceRegion *Node, BasicBlock *BB) { in getRegionForHeader() 66 static BasicBlock *getExitFor(const ConvergenceRegion *CR) { in getExitFor() 67 std::unordered_set<BasicBlock *> ExitTargets; in getExitFor() 68 for (BasicBlock *Exit : CR->Exits) { in getExitFor() 69 for (BasicBlock *Successor : successors(Exit)) { in getExitFor() 84 static BasicBlock *getDesignatedMergeBlock(Instruction *I) { in getDesignatedMergeBlock() [all …]
|
| H A D | SPIRVMergeRegionExitTargets.cpp | 43 std::unordered_set<BasicBlock *> gatherSuccessors(BasicBlock *BB) { in gatherSuccessors() 44 std::unordered_set<BasicBlock *> output; in gatherSuccessors() 68 BasicBlock *BB, in createExitVariable() 69 const DenseMap<BasicBlock *, ConstantInt *> &TargetToValue) { in createExitVariable() argument 79 BasicBlock *LHSTarget = BI->getSuccessor(0); in createExitVariable() 80 BasicBlock *RHSTarget = in createExitVariable() 96 void replaceBranchTargets(BasicBlock *BB, in replaceBranchTargets() 97 const SmallPtrSet<BasicBlock *, 4> &ToReplace, in replaceBranchTargets() argument 98 BasicBlock *NewTarget) { in replaceBranchTargets() 123 BasicBlock::iterator Position) { in CreateVariable() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Utils/ |
| H A D | BasicBlockUtils.cpp | 62 ArrayRef<BasicBlock *> BBs, in detachDeadBlocks() 68 SmallPtrSet<BasicBlock *, 4> UniqueSuccessors; in detachDeadBlocks() 69 for (BasicBlock *Succ : successors(BB)) { in detachDeadBlocks() 95 void llvm::DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU, in DeleteDeadBlock() 100 void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs, DomTreeUpdater *DTU, in DeleteDeadBlocks() 104 SmallPtrSet<BasicBlock *, 4> Dead(llvm::from_range, BBs); in DeleteDeadBlocks() 107 for (BasicBlock *Pred : predecessors(BB)) in DeleteDeadBlocks() 117 for (BasicBlock *BB : BBs) in DeleteDeadBlocks() 126 df_iterator_default_set<BasicBlock*> Reachable; in EliminateUnreachableBlocks() 129 for (BasicBlock *BB : depth_first_ext(&F, Reachable)) in EliminateUnreachableBlocks() [all …]
|
| H A D | FlattenCFG.cpp | 40 bool FlattenParallelAndOr(BasicBlock *BB, IRBuilder<> &Builder); 45 bool MergeIfRegion(BasicBlock *BB, IRBuilder<> &Builder); 52 bool CompareIfRegionBlock(BasicBlock *Block1, BasicBlock *Block2, 53 BasicBlock *Head2); 58 bool run(BasicBlock *BB); 136 bool FlattenCFGOpt::FlattenParallelAndOr(BasicBlock *BB, IRBuilder<> &Builder) { in FlattenParallelAndOr() 141 BasicBlock *LastCondBlock = nullptr; in FlattenParallelAndOr() 142 BasicBlock *FirstCondBlock = nullptr; in FlattenParallelAndOr() 143 BasicBlock *UnCondBlock = nullptr; in FlattenParallelAndOr() 147 SmallPtrSet<BasicBlock *, 16> Preds(llvm::from_range, predecessors(BB)); in FlattenParallelAndOr() [all …]
|
| H A D | LoopUnrollRuntime.cpp | 83 BasicBlock *PrologExit, in ConnectProlog() 84 BasicBlock *OriginalLoopLatchExit, in ConnectProlog() 85 BasicBlock *PreHeader, BasicBlock *NewPreHeader, in ConnectProlog() 100 BasicBlock *Latch = L->getLoopLatch(); in ConnectProlog() 102 BasicBlock *PrologLatch = cast<BasicBlock>(VMap[Latch]); in ConnectProlog() 109 for (BasicBlock *Succ : successors(Latch)) { in ConnectProlog() 153 SmallVector<BasicBlock *, 4> PrologExitPreds; in ConnectProlog() 156 for (BasicBlock *PredBB : predecessors(PrologExit)) in ConnectProlog() 178 SmallVector<BasicBlock *, 4> Preds(predecessors(OriginalLoopLatchExit)); in ConnectProlog() 210 static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit, in ConnectEpilog() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/SandboxIR/ |
| H A D | BasicBlock.cpp | 43 BasicBlock *BBIterator::getNodeParent() const { in getNodeParent() 44 llvm::BasicBlock *Parent = const_cast<BBIterator *>(this)->It.getNodeParent(); in getNodeParent() 45 return cast<BasicBlock>(Ctx->getValue(Parent)); in getNodeParent() 48 BasicBlock::iterator::pointer 49 BasicBlock::iterator::getInstr(llvm::BasicBlock::iterator It) const { in getInstr() 53 Function *BasicBlock::getParent() const { in getParent() 54 auto *BB = cast<llvm::BasicBlock>(Val); in getParent() 62 void BasicBlock::buildBasicBlockFromLLVMIR(llvm::BasicBlock *LLVMBB) { in buildBasicBlockFromLLVMIR() 68 if (isa<llvm::BasicBlock>(Op)) in buildBasicBlockFromLLVMIR() 78 BasicBlock::iterator BasicBlock::begin() const { in begin() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/ |
| H A D | StructurizeCFG.cpp | 76 using BBValuePair = std::pair<BasicBlock *, Value *>; 79 using BBVector = SmallVector<BasicBlock *, 8>; 83 using BBSet = SmallPtrSet<BasicBlock *, 8>; 86 using BB2BBVecMap = MapVector<BasicBlock *, BBVector>; 88 using BBPhiMap = DenseMap<BasicBlock *, PhiMap>; 128 using BBPredicates = DenseMap<BasicBlock *, PredInfo>; 129 using PredMap = DenseMap<BasicBlock *, BBPredicates>; 130 using BB2BBMap = DenseMap<BasicBlock *, BasicBlock *>; 192 BasicBlock *Result = nullptr; 196 void addBlock(BasicBlock *BB, bool Remember) { in addBlock() [all …]
|
| H A D | LoopSink.cpp | 78 static BlockFrequency adjustedSumFreq(SmallPtrSetImpl<BasicBlock *> &BBs, in adjustedSumFreq() 81 for (BasicBlock *B : BBs) in adjustedSumFreq() 115 static SmallPtrSet<BasicBlock *, 2> 116 findBBsToSinkInto(const Loop &L, const SmallPtrSetImpl<BasicBlock *> &UseBBs, in findBBsToSinkInto() 117 const SmallVectorImpl<BasicBlock *> &ColdLoopBBs, in findBBsToSinkInto() 119 SmallPtrSet<BasicBlock *, 2> BBsToSinkInto; in findBBsToSinkInto() 124 SmallPtrSet<BasicBlock *, 2> BBsDominatedByColdestBB; in findBBsToSinkInto() 134 for (BasicBlock *ColdestBB : ColdLoopBBs) { in findBBsToSinkInto() 136 for (BasicBlock *SinkedBB : BBsToSinkInto) in findBBsToSinkInto() 143 for (BasicBlock *DominatedBB : BBsDominatedByColdestBB) { in findBBsToSinkInto() [all …]
|
| /freebsd/contrib/llvm-project/clang/lib/Analysis/ |
| H A D | ThreadSafetyTIL.cpp | 57 unsigned BasicBlock::addPredecessor(BasicBlock *Pred) { in addPredecessor() 70 void BasicBlock::reservePredecessors(unsigned NumPreds) { in reservePredecessors() 151 unsigned BasicBlock::renumberInstrs(unsigned ID) { in renumberInstrs() 164 unsigned BasicBlock::topologicalSort(SimpleArray<BasicBlock *> &Blocks, in topologicalSort() 188 unsigned BasicBlock::topologicalFinalSort(SimpleArray<BasicBlock *> &Blocks, in topologicalFinalSort() 207 void BasicBlock::computeDominator() { in computeDominator() 208 BasicBlock *Candidate = nullptr; in computeDominator() 234 void BasicBlock::computePostDominator() { in computePostDominator() 235 BasicBlock *Candidate = nullptr; in computePostDominator() 265 static inline void computeNodeSize(BasicBlock *B, in computeNodeSize() [all …]
|
| /freebsd/contrib/llvm-project/llvm/lib/Transforms/IPO/ |
| H A D | PartialInlining.cpp | 156 SmallVector<BasicBlock *, 4> Entries; 159 BasicBlock *ReturnBlock = nullptr; 162 BasicBlock *NonReturnBlock = nullptr; 165 SmallVector<BasicBlock *, 4> ReturnBlockPreds; 173 OutlineRegionInfo(ArrayRef<BasicBlock *> Region, BasicBlock *EntryBlock, in OutlineRegionInfo() 174 BasicBlock *ExitBlock, BasicBlock *ReturnBlock) in OutlineRegionInfo() 177 SmallVector<BasicBlock *, 8> Region; 178 BasicBlock *EntryBlock; 179 BasicBlock *ExitBlock; 180 BasicBlock *ReturnBlock; [all …]
|