Lines Matching refs:BC
321 void NormalizeCFG::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
323 BC, ParallelUtilities::SchedulingPolicy::SP_BB_LINEAR, in runOnFunctions()
363 void EliminateUnreachableBlocks::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
364 for (auto &It : BC.getBinaryFunctions()) { in runOnFunctions()
387 void ReorderBasicBlocks::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
404 BC, ParallelUtilities::SchedulingPolicy::SP_BB_LINEAR, WorkFun, SkipFunc, in runOnFunctions()
410 BC.getBinaryFunctions().size()); in runOnFunctions()
416 auto &BFs = BC.getBinaryFunctions(); in runOnFunctions()
506 void FixupBranches::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
507 for (auto &It : BC.getBinaryFunctions()) { in runOnFunctions()
509 if (!BC.shouldEmit(Function) || !Function.isSimple()) in runOnFunctions()
516 void FinalizeFunctions::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
519 if (BC.HasRelocations) { in runOnFunctions()
535 return !BC.shouldEmit(BF); in runOnFunctions()
539 BC, ParallelUtilities::SchedulingPolicy::SP_CONSTANT, WorkFun, in runOnFunctions()
543 void CheckLargeFunctions::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
544 if (BC.HasRelocations) in runOnFunctions()
555 BC.calculateEmittedSize(BF, /*FixBranches=*/false); in runOnFunctions()
565 BC, ParallelUtilities::SchedulingPolicy::SP_INST_LINEAR, WorkFun, in runOnFunctions()
574 void LowerAnnotations::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
577 for (auto &It : BC.getBinaryFunctions()) { in runOnFunctions()
594 if (!BC.MIB->isInvoke(*II)) in runOnFunctions()
596 const int64_t NewGnuArgsSize = BC.MIB->getGnuArgsSize(*II); in runOnFunctions()
610 if (BF.requiresAddressTranslation() && BC.MIB->getOffset(*II)) in runOnFunctions()
612 *BC.MIB->getOffset(*II)); in runOnFunctions()
613 BC.MIB->stripAnnotations(*II); in runOnFunctions()
617 for (BinaryFunction *BF : BC.getInjectedBinaryFunctions()) in runOnFunctions()
620 BC.MIB->stripAnnotations(Instruction); in runOnFunctions()
623 BC.MIB->freeAnnotations(); in runOnFunctions()
627 BC.MIB->setOffset(*Item.first, Item.second); in runOnFunctions()
966 void SimplifyConditionalTailCalls::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
967 if (!BC.isX86()) in runOnFunctions()
970 for (auto &It : BC.getBinaryFunctions()) { in runOnFunctions()
996 const BinaryContext &BC = Function.getBinaryContext(); in shortenInstructions() local
1003 if (!BC.MIB->shortenInstruction(Inst, *BC.STI)) in shortenInstructions()
1007 BC.scopeLock(); in shortenInstructions()
1009 BC.printInstruction(outs(), OriginalInst, 0, &Function); in shortenInstructions()
1011 BC.printInstruction(outs(), Inst, 0, &Function); in shortenInstructions()
1021 void ShortenInstructions::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1023 if (!BC.isX86()) in runOnFunctions()
1027 BC, ParallelUtilities::SchedulingPolicy::SP_INST_LINEAR, in runOnFunctions()
1074 void Peepholes::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1081 for (auto &It : BC.getBinaryFunctions()) { in runOnFunctions()
1102 BinaryContext &BC = BF.getBinaryContext(); in simplifyRODataLoads() local
1103 MCPlusBuilder *MIB = BC.MIB.get(); in simplifyRODataLoads()
1113 const MCInstrDesc &Desc = BC.MII->get(Opcode); in simplifyRODataLoads()
1141 BinaryData *BD = BC.getBinaryDataByName(DisplSymbol->getName()); in simplifyRODataLoads()
1152 BC.getSectionForAddress(TargetAddress); in simplifyRODataLoads()
1156 if (BC.getRelocationAt(TargetAddress) || in simplifyRODataLoads()
1157 BC.getDynamicRelocationAt(TargetAddress)) in simplifyRODataLoads()
1183 void SimplifyRODataLoads::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1184 for (auto &It : BC.getBinaryFunctions()) { in runOnFunctions()
1197 void AssignSections::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1198 for (BinaryFunction *Function : BC.getInjectedBinaryFunctions()) { in runOnFunctions()
1199 Function->setCodeSectionName(BC.getInjectedCodeSectionName()); in runOnFunctions()
1200 Function->setColdCodeSectionName(BC.getInjectedColdCodeSectionName()); in runOnFunctions()
1204 if (!BC.HasRelocations) in runOnFunctions()
1208 BC.NumProfiledFuncs > 0 || in runOnFunctions()
1210 for (auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1213 Function.setCodeSectionName(BC.getHotTextMoverSectionName()); in runOnFunctions()
1214 Function.setColdCodeSectionName(BC.getHotTextMoverSectionName()); in runOnFunctions()
1219 Function.setCodeSectionName(BC.getMainCodeSectionName()); in runOnFunctions()
1221 Function.setCodeSectionName(BC.getColdCodeSectionName()); in runOnFunctions()
1224 Function.setColdCodeSectionName(BC.getColdCodeSectionName()); in runOnFunctions()
1228 void PrintProfileStats::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1242 for (const auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1291 for (const auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1321 void PrintProgramStats::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1330 for (auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1372 BC.NumProfiledFuncs = ProfiledFunctions.size(); in runOnFunctions()
1416 if (const uint64_t NumUnusedObjects = BC.getNumUnusedProfiledObjects()) { in runOnFunctions()
1442 for (const auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1509 if (!BC.TrappedFunctions.empty()) { in runOnFunctions()
1510 errs() << "BOLT-WARNING: " << BC.TrappedFunctions.size() << " function" in runOnFunctions()
1511 << (BC.TrappedFunctions.size() > 1 ? "s" : "") in runOnFunctions()
1514 if (opts::Verbosity >= 1 || BC.TrappedFunctions.size() <= 5) { in runOnFunctions()
1516 for (const BinaryFunction *Function : BC.TrappedFunctions) in runOnFunctions()
1524 if (BC.MissedMacroFusionPairs) { in runOnFunctions()
1525 outs() << "BOLT-INFO: the input contains " << BC.MissedMacroFusionPairs in runOnFunctions()
1526 << " (dynamic count : " << BC.MissedMacroFusionExecCount in runOnFunctions()
1544 for (auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1591 void InstructionLowering::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1592 for (auto &BFI : BC.getBinaryFunctions()) in runOnFunctions()
1595 BC.MIB->lowerTailCall(Instruction); in runOnFunctions()
1598 void StripRepRet::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1599 if (!BC.isX86()) in runOnFunctions()
1604 for (auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1607 if (LastInstRIter == BB.rend() || !BC.MIB->isReturn(*LastInstRIter) || in runOnFunctions()
1608 !BC.MIB->deleteREPPrefix(*LastInstRIter)) in runOnFunctions()
1623 void InlineMemcpy::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1624 if (!BC.isX86()) in runOnFunctions()
1629 for (auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1634 if (!BC.MIB->isCall(Inst) || MCPlus::getNumPrimeOperands(Inst) != 1 || in runOnFunctions()
1638 const MCSymbol *CalleeSymbol = BC.MIB->getTargetSymbol(Inst); in runOnFunctions()
1645 const bool IsTailCall = BC.MIB->isTailCall(Inst); in runOnFunctions()
1648 BC.MIB->createInlineMemcpy(IsMemcpy8); in runOnFunctions()
1653 BC.MIB->createReturn(Return); in runOnFunctions()
1710 void SpecializeMemcpy1::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1711 if (!BC.isX86()) in runOnFunctions()
1716 for (auto &BFI : BC.getBinaryFunctions()) { in runOnFunctions()
1732 if (!BC.MIB->isCall(Inst) || MCPlus::getNumPrimeOperands(Inst) != 1 || in runOnFunctions()
1736 const MCSymbol *CalleeSymbol = BC.MIB->getTargetSymbol(Inst); in runOnFunctions()
1741 if (BC.MIB->isTailCall(Inst)) in runOnFunctions()
1767 BC.MIB->createCmpJE(BC.MIB->getIntArgRegister(2), 1, in runOnFunctions()
1768 OneByteMemcpyBB->getLabel(), BC.Ctx.get()); in runOnFunctions()
1782 InstructionListType OneByteMemcpy = BC.MIB->createOneByteMemcpy(); in runOnFunctions()
1807 const BinaryContext &BC = BF.getBinaryContext(); in runOnFunction() local
1811 if (BC.MIB->isNoop(Inst) && BC.MIB->hasAnnotation(Inst, "NOP")) in runOnFunction()
1817 void RemoveNops::runOnFunctions(BinaryContext &BC) { in runOnFunctions() argument
1827 BC, ParallelUtilities::SchedulingPolicy::SP_INST_LINEAR, WorkFun, in runOnFunctions()