Home
last modified time | relevance | path

Searched refs:BasicBlock (Results 1 – 25 of 828) sorted by relevance

12345678910>>...34

/llvm-project-15.0.7/llvm/include/llvm/Transforms/Scalar/
H A DJumpThreading.h29 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 DBasicBlockUtils.h193 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 DCodeExtractor.h26 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 DBasicBlock.cpp70 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 DBasicBlock.h79 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 DDominators.h50 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 DCFG.h118 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 DPredIteratorCache.h29 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 DInstructions.h46 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 DMemorySSAUpdater.h44 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 DBranchProbabilityInfo.h167 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 DIteratedDominanceFrontier.h17 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 DInterval.h27 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 DCFG.h23 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 DFlattenCFG.cpp52 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 DBasicBlockUtils.cpp517 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 DLoopUnrollRuntime.cpp74 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 DCFG.cpp35 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 DMemorySSAUpdater.cpp37 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 DStructurizeCFG.cpp88 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 DDFAJumpThreading.cpp221 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 DLoopSink.cpp83 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 DThreadSafetyTIL.cpp58 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 DAMDGPUUnifyDivergentExitNodes.cpp118 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 DWinEHPrepare.cpp100 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 …]

12345678910>>...34