Home
last modified time | relevance | path

Searched refs:BinaryBasicBlock (Results 1 – 25 of 80) sorted by relevance

1234

/llvm-project-15.0.7/bolt/lib/Core/
H A DBinaryBasicBlock.cpp28 bool operator<(const BinaryBasicBlock &LHS, const BinaryBasicBlock &RHS) { in operator <()
54 BinaryBasicBlock::iterator BinaryBasicBlock::getFirstNonPseudo() { in getFirstNonPseudo()
63 BinaryBasicBlock::reverse_iterator BinaryBasicBlock::getLastNonPseudo() { in getLastNonPseudo()
168 BinaryBasicBlock *BinaryBasicBlock::getSuccessor(const MCSymbol *Label, in getSuccessor()
268 void BinaryBasicBlock::replaceSuccessor(BinaryBasicBlock *Succ, in replaceSuccessor()
296 void BinaryBasicBlock::removeSuccessor(BinaryBasicBlock *Succ) { in removeSuccessor()
312 void BinaryBasicBlock::addPredecessor(BinaryBasicBlock *Pred) { in addPredecessor()
316 void BinaryBasicBlock::removePredecessor(BinaryBasicBlock *Pred, in removePredecessor()
535 BinaryBasicBlock::getBranchStats(const BinaryBasicBlock *Succ) const { in getBranchStats()
583 BinaryBasicBlock::getBranchInfo(const BinaryBasicBlock &Succ) { in getBranchInfo()
[all …]
H A DBinaryFunctionProfile.cpp82 for (BinaryBasicBlock *BB : BasicBlocks) { in postProcessProfile()
87 for (BinaryBasicBlock *BB : BasicBlocks) { in postProcessProfile()
89 for (BinaryBasicBlock *Succ : BB->successors()) { in postProcessProfile()
100 for (BinaryBasicBlock *BB : BasicBlocks) { in postProcessProfile()
112 BinaryBasicBlock *FTSuccessor = BB->getSuccessor(); in postProcessProfile()
122 for (BinaryBasicBlock *BB : BasicBlocks) { in postProcessProfile()
152 for (BinaryBasicBlock *BB : BasicBlocks) { in postProcessProfile()
211 for (BinaryBasicBlock *BB : BasicBlocks) { in mergeProfileDataInto()
212 BinaryBasicBlock *BBMerge = &*BBMergeI; in mergeProfileDataInto()
278 for (BinaryBasicBlock *BB : BasicBlocks) { in inferFallThroughCounts()
[all …]
H A DFunctionLayout.cpp19 BinaryBasicBlock *FunctionFragment::front() const { return *begin(); } in front()
31 FunctionLayout::findFragment(const BinaryBasicBlock *BB) const { in findFragment()
35 void FunctionLayout::addBasicBlock(BinaryBasicBlock *BB) { in addBasicBlock()
46 void FunctionLayout::insertBasicBlocks(BinaryBasicBlock *InsertAfter, in insertBasicBlocks()
63 const DenseSet<const BinaryBasicBlock *> ToErase) { in eraseBasicBlocks()
64 auto IsErased = [&](const BinaryBasicBlock *const BB) { in eraseBasicBlocks()
82 for (BinaryBasicBlock *const BB : F) in updateLayoutIndices()
132 BinaryBasicBlock *FunctionLayout::getBasicBlockAfter(const BinaryBasicBlock *BB, in getBasicBlockAfter()
156 return ComputeEditDistance<BinaryBasicBlock *>(PreviousBlocks, Blocks); in getEditDistance()
160 FunctionLayout::findBasicBlockPos(const BinaryBasicBlock *BB) const { in findBasicBlockPos()
[all …]
H A DBinaryFunction.cpp269 BinaryBasicBlock *
288 BinaryBasicBlock *BB = I->second; in getBasicBlockContainingOffset()
293 std::stack<BinaryBasicBlock *> Stack; in markUnreachableBlocks()
295 for (BinaryBasicBlock &BB : blocks()) in markUnreachableBlocks()
319 BinaryBasicBlock *BB = Stack.top(); in markUnreachableBlocks()
349 BinaryBasicBlock *BB = *I; in eraseInvalidBBs()
2236 BinaryBasicBlock &BB = *BBI; in removeConditionalTailCalls()
2794 for (BinaryBasicBlock *BB : F) { in finalizeCFIState()
3602 BinaryBasicBlock *Start, in insertBasicBlocks()
3837 BinaryBasicBlock *BinaryFunction::splitEdge(BinaryBasicBlock *From, in splitEdge()
[all …]
/llvm-project-15.0.7/bolt/include/bolt/Passes/
H A DTailDuplication.h90 constantAndCopyPropagate(BinaryBasicBlock &OriginalBB,
94 bool isInCacheLine(const BinaryBasicBlock &BB,
95 const BinaryBasicBlock &Tail) const;
98 std::vector<BinaryBasicBlock *> duplicateBlocks(
99 BinaryBasicBlock &BB,
103 bool shouldDuplicate(BinaryBasicBlock *BB, BinaryBasicBlock *Tail) const;
116 BinaryBasicBlock *Pred, BinaryBasicBlock *Tail) const;
121 std::vector<BinaryBasicBlock *>
122 moderateDuplicate(BinaryBasicBlock &BB, BinaryBasicBlock &Tail) const;
125 std::vector<BinaryBasicBlock *>
[all …]
H A DLongJmp.h35 using StubTy = std::pair<uint64_t, BinaryBasicBlock *>;
40 DenseMap<const MCSymbol *, BinaryBasicBlock *> SharedStubs;
56 DenseMap<const BinaryBasicBlock *, uint64_t> BBAddresses;
59 DenseMap<const BinaryBasicBlock *, int> StubBits;
92 std::pair<std::unique_ptr<BinaryBasicBlock>, MCSymbol *>
99 std::unique_ptr<BinaryBasicBlock>
117 BinaryBasicBlock *lookupGlobalStub(const BinaryBasicBlock &SourceBB,
122 BinaryBasicBlock *lookupLocalStub(const BinaryBasicBlock &SourceBB,
130 bool needsStub(const BinaryBasicBlock &BB, const MCInst &Inst,
134 bool relaxStub(BinaryBasicBlock &StubBB);
[all …]
H A DInstrumentation.h76 std::vector<std::pair<BinaryBasicBlock *, BinaryBasicBlock *>>;
85 BinaryBasicBlock::iterator &Iter,
87 BinaryBasicBlock &FromBB, uint32_t From,
88 BinaryFunction &ToFunc, BinaryBasicBlock *TargetBB,
93 void instrumentLeafNode(BinaryBasicBlock &BB, BinaryBasicBlock::iterator Iter,
97 void instrumentIndirectTarget(BinaryBasicBlock &BB,
98 BinaryBasicBlock::iterator &Iter,
H A DIndirectCallPromotion.h99 using BasicBlocksVector = std::vector<std::unique_ptr<BinaryBasicBlock>>;
178 std::vector<Callsite> getCallTargets(BinaryBasicBlock &BB,
181 size_t canPromoteCallsite(const BinaryBasicBlock &BB, const MCInst &Inst,
185 void printCallsiteInfo(const BinaryBasicBlock &BB, const MCInst &Inst,
189 JumpTableInfoType maybeGetHotJumpTableTargets(BinaryBasicBlock &BB,
195 size_t &N, BinaryBasicBlock &BB,
199 MethodInfoType maybeGetVtableSyms(BinaryBasicBlock &BB, MCInst &Inst,
202 std::vector<std::unique_ptr<BinaryBasicBlock>>
203 rewriteCall(BinaryBasicBlock &IndCallBlock, const MCInst &CallInst,
207 BinaryBasicBlock *fixCFG(BinaryBasicBlock &IndCallBlock,
H A DDataflowAnalysis.h43 BinaryBasicBlock *BB;
45 DataU(BinaryBasicBlock *BB) : BB(BB) {} in DataU()
80 BinaryBasicBlock *getBB() const { in getBB()
94 void doForAllPreds(const BinaryBasicBlock &BB,
98 void doForAllSuccs(const BinaryBasicBlock &BB,
252 void doForAllSuccsOrPreds(const BinaryBasicBlock &BB, in doForAllSuccsOrPreds()
306 for (BinaryBasicBlock &BB : Func) { in cleanAnnotations()
321 for (BinaryBasicBlock &BB : Func) { in run()
330 std::queue<BinaryBasicBlock *> Worklist; in run()
334 for (BinaryBasicBlock &BB : Func) { in run()
[all …]
/llvm-project-15.0.7/bolt/lib/Passes/
H A DMCF.cpp76 DenseMap<std::pair<const BinaryBasicBlock *, const BinaryBasicBlock *>,
175 for (BinaryBasicBlock &BB : BF) in computeEdgeWeights()
182 for (BinaryBasicBlock &BB : BF) { in recalculateBBCounts()
212 for (BinaryBasicBlock &BB : BF) { in guessEdgeByRelHotness()
236 DenseSet<std::pair<const BinaryBasicBlock *, const BinaryBasicBlock *>>;
322 for (BinaryBasicBlock &BB : BF) { in guessEdgeByIterativeApproach()
331 for (BinaryBasicBlock &BB : BF) { in guessEdgeByIterativeApproach()
361 for (BinaryBasicBlock &BB : BF) in createLoopNestLevelMap()
379 DenseMap<const BinaryBasicBlock *, std::set<const BinaryBasicBlock *>> in equalizeBBCounts()
390 for (BinaryBasicBlock &BB : BF) in equalizeBBCounts()
[all …]
H A DTailDuplication.cpp127 std::queue<BinaryBasicBlock *> Q; in isOverwrittenBeforeUsed()
129 BinaryBasicBlock *NextBB = *Itr; in isOverwrittenBeforeUsed()
132 std::set<BinaryBasicBlock *> Visited; in isOverwrittenBeforeUsed()
136 BinaryBasicBlock *CurrBB = Q.front(); in isOverwrittenBeforeUsed()
154 BinaryBasicBlock *NextBB = *Itr; in isOverwrittenBeforeUsed()
162 BinaryBasicBlock &OriginalBB, in constantAndCopyPropagate()
271 std::vector<BinaryBasicBlock *>
294 std::vector<BinaryBasicBlock *>
305 BinaryBasicBlock *CurrBB = &BB; in aggressiveDuplicate()
469 std::vector<BinaryBasicBlock *>
[all …]
H A DCacheMetrics.cpp41 std::unordered_map<BinaryBasicBlock *, uint64_t> &BBAddr, in extractBasicBlockInfo() argument
42 std::unordered_map<BinaryBasicBlock *, uint64_t> &BBSize) { in extractBasicBlockInfo()
46 for (BinaryBasicBlock &BB : *BF) { in extractBasicBlockInfo()
71 for (BinaryBasicBlock &SrcBB : *BF) { in calcTSPScore()
73 for (BinaryBasicBlock *DstBB : SrcBB.successors()) { in calcTSPScore()
96 for (BinaryBasicBlock &SrcBB : *BF) { in calcExtTSPScore()
98 for (BinaryBasicBlock *DstBB : SrcBB.successors()) { in calcExtTSPScore()
224 assert(Count != BinaryBasicBlock::COUNT_NO_PROFILE); in extTSPScore()
268 for (const BinaryBasicBlock &BB : *BF) { in printAll()
302 std::unordered_map<BinaryBasicBlock *, uint64_t> BBAddr; in printAll()
[all …]
H A DLongJmp.cpp120 BinaryBasicBlock *LongJmpPass::lookupStubFromGroup( in lookupStubFromGroup()
158 BinaryBasicBlock *
168 BinaryBasicBlock *LongJmpPass::lookupLocalStub(const BinaryBasicBlock &SourceBB, in lookupLocalStub()
181 std::unique_ptr<BinaryBasicBlock>
187 std::unique_ptr<BinaryBasicBlock> NewBB; in replaceTargetWithStub()
191 BinaryBasicBlock::BinaryBranchInfo BI{0, 0}; in replaceTargetWithStub()
533 std::vector<std::pair<BinaryBasicBlock *, std::unique_ptr<BinaryBasicBlock>>> in relax()
543 for (BinaryBasicBlock &BB : Func) { in relax()
568 BinaryBasicBlock *InsertionPoint = &BB; in relax()
597 for (BinaryBasicBlock &BB : Func) { in relax()
[all …]
H A DCMOVConversion.cpp65 bool isIfThenSubgraph(const BinaryBasicBlock &LHS, in isIfThenSubgraph()
66 const BinaryBasicBlock &RHS) { in isIfThenSubgraph()
71 BinaryBasicBlock *Predecessor = *RHS.pred_begin(); in isIfThenSubgraph()
82 bool matchCFGSubgraph(BinaryBasicBlock &BB, BinaryBasicBlock *&ConditionalSucc, in matchCFGSubgraph()
83 BinaryBasicBlock *&UnconditionalSucc, in matchCFGSubgraph()
85 BinaryBasicBlock *TakenSucc = BB.getConditionalSuccessor(true); in matchCFGSubgraph()
149 calculateMispredictionRate(const BinaryBasicBlock &BB) { in calculateMispredictionRate()
154 if (BI.MispredictedCount != BinaryBasicBlock::COUNT_INFERRED) in calculateMispredictionRate()
164 int calculateConditionBias(const BinaryBasicBlock &BB, in calculateConditionBias()
188 for (BinaryBasicBlock *BB : post_order(&Function)) { in runOnFunction()
[all …]
H A DSplitFunctions.cpp93 for (const BinaryBasicBlock &BB : BF) { in canSplit()
95 if (ExecCount == BinaryBasicBlock::COUNT_NO_PROFILE) in canSplit()
104 bool canOutline(const BinaryBasicBlock &BB) { in canOutline()
110 BinaryBasicBlock *BB = *I; in partition()
226 for (BinaryBasicBlock *const BB : NewLayout) { in splitFunction()
264 stable_sort(NewLayout, [&](BinaryBasicBlock *A, BinaryBasicBlock *B) { in splitFunction()
276 [&](BinaryBasicBlock *A, BinaryBasicBlock *B) { in splitFunction()
311 for (BinaryBasicBlock &BB : BF) in splitFunction()
331 for (BinaryBasicBlock *BB : Blocks) { in createEHTrampolines()
372 stable_sort(NewLayout, [&](BinaryBasicBlock *A, BinaryBasicBlock *B) { in createEHTrampolines()
[all …]
H A DValidateInternalCalls.cpp30 BinaryBasicBlock *getInternalCallTarget(BinaryFunction &Function, in getInternalCallTarget()
97 std::queue<BinaryBasicBlock *> Work; in fixCFGForPIC()
98 for (BinaryBasicBlock &BB : Function) in fixCFGForPIC()
102 BinaryBasicBlock &BB = *Work.front(); in fixCFGForPIC()
106 const BinaryBasicBlock::iterator InternalCall = in fixCFGForPIC()
125 std::vector<std::unique_ptr<BinaryBasicBlock>> NewBBs; in fixCFGForPIC()
175 BinaryBasicBlock *ReturnDestBlock = in fixCFGForIC()
187 for (BinaryBasicBlock &BB : Function) { in fixCFGForIC()
201 for (BinaryBasicBlock &BB : Function) in hasTailCallsInRange()
218 for (BinaryBasicBlock &BB : Function) { in analyzeFunction()
[all …]
H A DThreeWayBranch.cpp22 for (const BinaryBasicBlock &BB : Function) in shouldRunOnFunction()
36 for (BinaryBasicBlock *BB : BlockLayout) { in runOnFunction()
39 BB->getExecutionCount() == BinaryBasicBlock::COUNT_NO_PROFILE) in runOnFunction()
48 BinaryBasicBlock *FalseSucc = BB->getConditionalSuccessor(false); in runOnFunction()
49 BinaryBasicBlock *TrueSucc = BB->getConditionalSuccessor(true); in runOnFunction()
58 BinaryBasicBlock *SecondBranch = FalseSucc; in runOnFunction()
59 BinaryBasicBlock *FirstEndpoint = TrueSucc; in runOnFunction()
65 BinaryBasicBlock *SecondEndpoint = in runOnFunction()
67 BinaryBasicBlock *ThirdEndpoint = in runOnFunction()
99 std::vector<std::pair<BinaryBasicBlock *, unsigned>> Blocks; in runOnFunction()
[all …]
H A DReorderAlgorithm.cpp78 for (BinaryBasicBlock *BB : Clusters[I]) { in computeClusterAverageFrequency()
97 for (BinaryBasicBlock *BB : Clusters[I]) { in printClusters()
116 HashPair<const BinaryBasicBlock *, const BinaryBasicBlock *> Hasher; in operator ()()
166 const BinaryBasicBlock *SrcBB = E.Src; in clusterBasicBlocks()
167 const BinaryBasicBlock *DstBB = E.Dst; in clusterBasicBlocks()
194 for (BinaryBasicBlock *BB : ClusterB) in clusterBasicBlocks()
264 const BinaryBasicBlock *SrcBB = E.Src; in calculateWeight()
265 const BinaryBasicBlock *DstBB = E.Dst; in calculateWeight()
339 const BinaryBasicBlock *SrcBB = E.Src; in adjustQueue()
340 const BinaryBasicBlock *DstBB = E.Dst; in adjustQueue()
[all …]
H A DInstrumentation.cpp321 std::stack<std::pair<const BinaryBasicBlock *, BinaryBasicBlock *>> Stack; in instrumentFunction()
322 std::unordered_map<const BinaryBasicBlock *, in instrumentFunction()
342 BinaryBasicBlock *BB; in instrumentFunction()
343 const BinaryBasicBlock *Pred; in instrumentFunction()
361 DenseSet<const BinaryBasicBlock *> InvokeBlocks; in instrumentFunction()
373 BinaryBasicBlock &BB = *BBI; in instrumentFunction()
400 const BinaryBasicBlock *ForeignBB = in instrumentFunction()
490 BinaryBasicBlock &BB = *BBI; in instrumentFunction()
500 for (std::pair<BinaryBasicBlock *, BinaryBasicBlock *> &BBPair : in instrumentFunction()
551 BinaryBasicBlock &BB = Main->front(); in runOnFunctions()
[all …]
H A DInliner.cpp168 for (const BinaryBasicBlock &BB : BF) { in getInliningInfo()
235 std::pair<BinaryBasicBlock *, BinaryBasicBlock::iterator>
236 Inliner::inlineCall(BinaryBasicBlock &CallerBB, in inlineCall()
257 BinaryBasicBlock *FirstInlinedBB = &CallerBB; in inlineCall()
266 BinaryBasicBlock *NextBB = nullptr; in inlineCall()
289 std::unordered_map<const BinaryBasicBlock *, BinaryBasicBlock *> InlinedBBMap; in inlineCall()
302 for (const BinaryBasicBlock &BB : Callee) { in inlineCall()
303 BinaryBasicBlock *InlinedBB = InlinedBBMap[&BB]; in inlineCall()
322 const BinaryBasicBlock *TargetBB = in inlineCall()
401 Blocks, [](const BinaryBasicBlock *BB1, const BinaryBasicBlock *BB2) { in inlineCallsInFunction()
[all …]
H A DLoopInversionPass.cpp38 for (BinaryBasicBlock *BB : BF.getLayout().blocks()) { in runOnFunction()
42 BinaryBasicBlock *SuccBB = *BB->succ_begin(); in runOnFunction()
43 BinaryBasicBlock *PredBB = *BB->pred_begin(); in runOnFunction()
49 BinaryBasicBlock *SecondSucc = nullptr; in runOnFunction()
50 for (BinaryBasicBlock *Succ : SuccBB->successors()) { in runOnFunction()
77 llvm::sort(NewOrder, [&](BinaryBasicBlock *BB1, BinaryBasicBlock *BB2) { in runOnFunction()
/llvm-project-15.0.7/bolt/include/bolt/Core/
H A DBinaryBasicBlock.h37 class BinaryBasicBlock {
148 BinaryBasicBlock() = delete;
149 BinaryBasicBlock(const BinaryBasicBlock &) = delete;
150 BinaryBasicBlock(const BinaryBasicBlock &&) = delete;
151 BinaryBasicBlock &operator=(const BinaryBasicBlock &) = delete;
152 BinaryBasicBlock &operator=(const BinaryBasicBlock &&) = delete;
399 BinaryBasicBlock *getFallthrough() { in getFallthrough()
604 void replaceSuccessor(BinaryBasicBlock *Succ, BinaryBasicBlock *NewSucc,
795 BinaryBasicBlock *splitAt(iterator II);
980 bool operator<(const BinaryBasicBlock &LHS, const BinaryBasicBlock &RHS);
[all …]
H A DFunctionLayout.h31 class BinaryBasicBlock; variable
54 using BasicBlockListType = SmallVector<BinaryBasicBlock *, 0>;
72 BinaryBasicBlock *front() const;
88 using BasicBlockListType = SmallVector<BinaryBasicBlock *, 0>;
152 void addBasicBlock(BinaryBasicBlock *BB);
156 void insertBasicBlocks(BinaryBasicBlock *InsertAfter,
157 ArrayRef<BinaryBasicBlock *> NewBlocks);
168 void update(const ArrayRef<BinaryBasicBlock *> NewLayout);
181 BinaryBasicBlock *getBasicBlockAfter(const BinaryBasicBlock *BB,
204 BinaryBasicBlock *block_back() const { return Blocks.back(); } in block_back()
[all …]
H A DBinaryLoop.h23 class BinaryBasicBlock; variable
25 class BinaryLoop : public LoopBase<BinaryBasicBlock, BinaryLoop> {
27 BinaryLoop() : LoopBase<BinaryBasicBlock, BinaryLoop>() {} in BinaryLoop()
41 friend class LoopInfoBase<BinaryBasicBlock, BinaryLoop>;
42 explicit BinaryLoop(BinaryBasicBlock *BB) in BinaryLoop()
43 : LoopBase<BinaryBasicBlock, BinaryLoop>(BB) {} in BinaryLoop()
46 class BinaryLoopInfo : public LoopInfoBase<BinaryBasicBlock, BinaryLoop> {
H A DBinaryFunction.h182 BinaryBasicBlock::COUNT_NO_PROFILE;
708 BinaryBasicBlock *BB = BasicBlocks.back(); in addBasicBlockAt()
727 for (BinaryBasicBlock *BB : BasicBlocks) in releaseCFG()
900 BinaryBasicBlock *getLandingPadBBFor(const BinaryBasicBlock &BB, in getLandingPadBBFor()
1472 std::unique_ptr<BinaryBasicBlock>
1479 std::unique_ptr<BinaryBasicBlock>(new BinaryBasicBlock(this, Label));
1526 insertBasicBlocks(BinaryBasicBlock *Start,
1563 bool replaceJumpTableEntryIn(BinaryBasicBlock *BB, BinaryBasicBlock *OldDest,
1572 BinaryBasicBlock *splitEdge(BinaryBasicBlock *From, BinaryBasicBlock *To);
1658 BinaryBasicBlock::iterator addCFIInstruction(BinaryBasicBlock *BB, in addCFIInstruction()
[all …]

1234