| /llvm-project-15.0.7/bolt/lib/Core/ |
| H A D | BinaryBasicBlock.cpp | 28 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 D | BinaryFunctionProfile.cpp | 82 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 D | FunctionLayout.cpp | 19 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 D | BinaryFunction.cpp | 269 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 D | TailDuplication.h | 90 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 D | LongJmp.h | 35 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 D | Instrumentation.h | 76 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 D | IndirectCallPromotion.h | 99 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 D | DataflowAnalysis.h | 43 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 D | MCF.cpp | 76 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 D | TailDuplication.cpp | 127 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 D | CacheMetrics.cpp | 41 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 D | LongJmp.cpp | 120 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 D | CMOVConversion.cpp | 65 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 D | SplitFunctions.cpp | 93 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 D | ValidateInternalCalls.cpp | 30 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 D | ThreeWayBranch.cpp | 22 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 D | ReorderAlgorithm.cpp | 78 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 D | Instrumentation.cpp | 321 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 D | Inliner.cpp | 168 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 D | LoopInversionPass.cpp | 38 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 D | BinaryBasicBlock.h | 37 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 D | FunctionLayout.h | 31 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 D | BinaryLoop.h | 23 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 D | BinaryFunction.h | 182 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 …]
|