Lines Matching refs:BinaryBasicBlock

14 #include "bolt/Core/BinaryBasicBlock.h"
277 BinaryBasicBlock *
296 BinaryBasicBlock *BB = I->second;
301 std::stack<BinaryBasicBlock *> Stack;
303 for (BinaryBasicBlock &BB : blocks())
307 for (BinaryBasicBlock *BB : BasicBlocks) {
327 BinaryBasicBlock *BB = Stack.top();
329 for (BinaryBasicBlock *Succ : BB->successors()) {
342 DenseSet<const BinaryBasicBlock *> InvalidBBs;
345 for (BinaryBasicBlock *const BB : BasicBlocks) {
358 BinaryBasicBlock *BB = *I;
469 for (const BinaryBasicBlock *BB : Layout.blocks())
516 for (const BinaryBasicBlock *BB : FF) {
538 if (BB->getExecutionCount() != BinaryBasicBlock::COUNT_NO_PROFILE)
552 for (BinaryBasicBlock *Pred : BB->predecessors())
559 for (BinaryBasicBlock *Throw : BB->throwers())
582 BinaryBasicBlock *Succ = BB->Successors[Indices[I]];
583 const BinaryBasicBlock::BinaryBranchInfo &BI =
587 BI.MispredictedCount != BinaryBasicBlock::COUNT_INFERRED) {
591 BI.Count != BinaryBasicBlock::COUNT_NO_PROFILE) {
601 for (BinaryBasicBlock *LP : BB->landing_pads()) {
1853 if (BinaryBasicBlock *BB = getBasicBlockAtOffset(Destination)) {
1878 auto addUnknownControlFlow = [&](BinaryBasicBlock &BB) {
1884 if (BinaryBasicBlock *SuccBB = getBasicBlockAtOffset(PossibleDestination))
1890 BinaryBasicBlock *LastIndirectJumpBB = nullptr;
1893 for (BinaryBasicBlock &BB : blocks()) {
1894 for (BinaryBasicBlock::iterator II = BB.begin(); II != BB.end(); ++II) {
2018 for (BinaryBasicBlock *BB : BasicBlocks) {
2023 for (BinaryBasicBlock *BB : BasicBlocks) {
2024 std::unordered_set<const BinaryBasicBlock *> BBLandingPads;
2034 BinaryBasicBlock *LPBlock = getBasicBlockForLabel(EHInfo->first);
2074 BinaryBasicBlock *InsertBB = nullptr;
2075 BinaryBasicBlock *PrevBB = nullptr;
2081 BinaryBasicBlock *InsertBB) {
2096 for (BinaryBasicBlock::reverse_iterator RII = PrevBB->getLastNonPseudo(),
2212 BinaryBasicBlock *FromBB = getBasicBlockContainingOffset(Branch.first);
2213 BinaryBasicBlock *ToBB = getBasicBlockAtOffset(Branch.second);
2230 for (BinaryBasicBlock *BB : BasicBlocks) {
2273 for (BinaryBasicBlock *BB : BasicBlocks) {
2336 for (BinaryBasicBlock &BB : blocks())
2346 for (BinaryBasicBlock *BB : BasicBlocks) {
2347 if (BB->ExecutionCount == BinaryBasicBlock::COUNT_NO_PROFILE)
2349 for (BinaryBasicBlock::BinaryBranchInfo &BI : BB->branch_info()) {
2350 if (BI.Count != BinaryBasicBlock::COUNT_NO_PROFILE &&
2351 BI.MispredictedCount != BinaryBasicBlock::COUNT_NO_PROFILE)
2361 std::vector<std::unique_ptr<BinaryBasicBlock>> NewBlocks;
2364 BinaryBasicBlock &BB = *BBI;
2377 uint64_t CTCTakenCount = BinaryBasicBlock::COUNT_NO_PROFILE;
2378 uint64_t CTCMispredCount = BinaryBasicBlock::COUNT_NO_PROFILE;
2406 std::unique_ptr<BinaryBasicBlock> TailCallBB =
2448 for (const BinaryBasicBlock &BB : blocks()) {
2450 if (BBExecCount == BinaryBasicBlock::COUNT_NO_PROFILE)
2478 for (BinaryBasicBlock *BB : BasicBlocks) {
2749 BinaryBasicBlock *InBB,
2750 BinaryBasicBlock::iterator InsertIt) {
2783 BinaryBasicBlock *InBB,
2784 BinaryBasicBlock::iterator &InsertIt) {
2917 for (BinaryBasicBlock *CurBB : Layout.blocks()) {
2949 for (BinaryBasicBlock *BB : FF) {
2975 for (BinaryBasicBlock &BB : blocks()) {
3004 for (const BinaryBasicBlock &BB : blocks())
3053 for (BinaryBasicBlock *BB : BasicBlocks)
3057 for (BinaryBasicBlock *BB : DeletedBasicBlocks)
3074 for (BinaryBasicBlock *BB : getLayout().blocks()) {
3160 for (BinaryBasicBlock *BB : BasicBlocks) {
3212 for (BinaryBasicBlock *Succ : BB->successors()) {
3233 BI->MispredictedCount != BinaryBasicBlock::COUNT_INFERRED) {
3236 BI->Count != BinaryBasicBlock::COUNT_NO_PROFILE) {
3243 for (BinaryBasicBlock *LP : BB->landing_pads()) {
3297 for (BinaryBasicBlock *BB : BasicBlocks)
3302 auto validateBlock = [this](const BinaryBasicBlock *BB, StringRef Desc) {
3311 for (const BinaryBasicBlock *BB : BasicBlocks) {
3314 for (const BinaryBasicBlock *PredBB : BB->predecessors())
3317 for (const BinaryBasicBlock *SuccBB : BB->successors())
3320 for (const BinaryBasicBlock *LP : BB->landing_pads())
3323 for (const BinaryBasicBlock *Thrower : BB->throwers())
3328 for (const BinaryBasicBlock *BB : BasicBlocks) {
3329 std::unordered_set<const BinaryBasicBlock *> BBLandingPads;
3330 for (const BinaryBasicBlock *LP : BB->landing_pads()) {
3339 std::unordered_set<const BinaryBasicBlock *> BBThrowers;
3340 for (const BinaryBasicBlock *Thrower : BB->throwers()) {
3349 for (const BinaryBasicBlock *LPBlock : BB->landing_pads()) {
3358 for (const BinaryBasicBlock *Thrower : BB->throwers()) {
3375 for (BinaryBasicBlock *BB : BasicBlocks) {
3388 const BinaryBasicBlock *const NextBB =
3403 const BinaryBasicBlock *TSuccessor = BB->getConditionalSuccessor(true);
3404 const BinaryBasicBlock *FSuccessor = BB->getConditionalSuccessor(false);
3489 for (BinaryBasicBlock *BB : BasicBlocks) {
3514 for (BinaryBasicBlock &BB : blocks()) {
3577 MCSymbol *BinaryFunction::addEntryPoint(const BinaryBasicBlock &BB) {
3607 for (BinaryBasicBlock *BB : BasicBlocks) {
3639 for (const BinaryBasicBlock *BB : BasicBlocks) {
3681 std::stack<BinaryBasicBlock *> Stack;
3682 std::set<BinaryBasicBlock *> Visited;
3687 SmallVector<BinaryBasicBlock *> EntryPoints;
3689 [&](const BinaryBasicBlock *const BB) { return isEntryPoint(*BB); });
3692 llvm::stable_sort(EntryPoints, [](const BinaryBasicBlock *const A,
3693 const BinaryBasicBlock *const B) {
3696 for (BinaryBasicBlock *const BB : reverse(EntryPoints))
3700 BinaryBasicBlock *BB = Stack.top();
3707 for (BinaryBasicBlock *SuccBB : BB->landing_pads()) {
3726 for (BinaryBasicBlock *SuccBB : BB->successors()) {
3749 SmallVector<const BinaryBasicBlock *, 0> Order;
3758 for (const BinaryBasicBlock *BB : Order)
3771 BinaryBasicBlock *Start,
3772 std::vector<std::unique_ptr<BinaryBasicBlock>> &&NewBBs,
3782 for (std::unique_ptr<BinaryBasicBlock> &BB : NewBBs) {
3801 std::vector<std::unique_ptr<BinaryBasicBlock>> &&NewBBs,
3812 for (std::unique_ptr<BinaryBasicBlock> &BB : NewBBs) {
3836 void BinaryFunction::updateCFIState(BinaryBasicBlock *Start,
3844 void BinaryFunction::updateLayout(BinaryBasicBlock *Start,
3866 for (BinaryBasicBlock *&BB : BasicBlocks) {
3890 for (BinaryBasicBlock *&BB : BasicBlocks) {
3986 bool BinaryFunction::replaceJumpTableEntryIn(BinaryBasicBlock *BB,
3987 BinaryBasicBlock *OldDest,
3988 BinaryBasicBlock *NewDest) {
4003 BinaryBasicBlock *BinaryFunction::splitEdge(BinaryBasicBlock *From,
4004 BinaryBasicBlock *To) {
4014 std::unique_ptr<BinaryBasicBlock> NewBB = createBasicBlock(Tmp);
4016 BinaryBasicBlock *NewBBPtr = NewBB.get();
4037 std::vector<std::unique_ptr<BinaryBasicBlock>> NewBBs;
4049 BinaryBasicBlock *BB = *I;
4120 for (BinaryBasicBlock &BB : blocks())
4127 for (BinaryBasicBlock *BB : BasicBlocks)
4129 for (BinaryBasicBlock *BB : DeletedBasicBlocks)
4171 SmallVector<BinaryBasicBlock *, 1> Latches;
4174 for (BinaryBasicBlock *Latch : Latches) {
4176 for (BinaryBasicBlock *Succ : Latch->successors()) {
4178 assert(BI->Count != BinaryBasicBlock::COUNT_NO_PROFILE &&
4193 const BinaryBasicBlock *Exiting = Exit.first;
4194 const BinaryBasicBlock *ExitTarget = Exit.second;
4196 for (BinaryBasicBlock *Succ : Exiting->successors()) {
4198 assert(BI->Count != BinaryBasicBlock::COUNT_NO_PROFILE &&
4288 BinaryBasicBlock *PrevBB = nullptr;
4289 for (BinaryBasicBlock *const BB : FF) {
4325 for (BinaryBasicBlock *BB : DeletedBasicBlocks) {
4381 const BinaryBasicBlock *BB = getBasicBlockContainingOffset(Offset);
4430 const BinaryBasicBlock &BB = *BBI->second;
4483 BinaryBasicBlock *BB = getBasicBlockContainingOffset(Offset);
4546 for (BinaryBasicBlock *BB : L->blocks())
4571 BinaryBasicBlock &BB = **BasicBlocks.begin();