• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/Transforms/IPO/

Lines Matching refs:Cloner

283   BranchProbability getOutliningCallBBRelativeFreq(FunctionCloner &Cloner);
287 bool shouldPartialInline(CallSite CS, FunctionCloner &Cloner,
294 bool tryPartialInline(FunctionCloner &Cloner);
334 // basic block Cloner.OutliningCallBB;
335 std::tuple<int, int> computeOutliningCosts(FunctionCloner &Cloner);
722 PartialInlinerImpl::getOutliningCallBBRelativeFreq(FunctionCloner &Cloner) {
723 BasicBlock *OutliningCallBB = Cloner.OutlinedFunctions.back().second;
725 Cloner.ClonedFuncBFI->getBlockFreq(&Cloner.ClonedFunc->getEntryBlock());
727 Cloner.ClonedFuncBFI->getBlockFreq(OutliningCallBB);
737 if (hasProfileData(Cloner.OrigFunc, Cloner.ClonedOI.get()))
762 CallSite CS, FunctionCloner &Cloner,
769 assert(Callee == Cloner.ClonedFunc);
787 << NV("Callee", Cloner.OrigFunc)
796 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into "
806 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into "
824 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into "
838 << NV("Callee", Cloner.OrigFunc) << " can be partially inlined into "
892 PartialInlinerImpl::computeOutliningCosts(FunctionCloner &Cloner) {
894 for (auto FuncBBPair : Cloner.OutlinedFunctions) {
905 assert(OutlinedFunctionCost >= Cloner.OutlinedRegionCost &&
912 2 * InlineConstants::InstrCost * Cloner.OutlinedFunctions.size();
916 (OutlinedFunctionCost - Cloner.OutlinedRegionCost) +
1284 FunctionCloner Cloner(F, OMRI.get(), ORE, LookupAssumptionCache);
1293 bool DidOutline = Cloner.doMultiRegionFunctionOutlining();
1299 Cloner.ClonedFunc->print(dbgs());
1304 if (tryPartialInline(Cloner))
1317 FunctionCloner Cloner(F, OI.get(), ORE, LookupAssumptionCache);
1318 Cloner.NormalizeReturnBlock();
1320 Function *OutlinedFunction = Cloner.doSingleRegionFunctionOutlining();
1325 bool AnyInline = tryPartialInline(Cloner);
1333 bool PartialInlinerImpl::tryPartialInline(FunctionCloner &Cloner) {
1334 if (Cloner.OutlinedFunctions.empty())
1340 std::tie(SizeCost, NonWeightedRcost) = computeOutliningCosts(Cloner);
1345 if (Cloner.ClonedOI) {
1346 RelativeToEntryFreq = getOutliningCallBBRelativeFreq(Cloner);
1361 if (!SkipCostAnalysis && Cloner.OutlinedRegionCost < SizeCost) {
1362 OptimizationRemarkEmitter OrigFuncORE(Cloner.OrigFunc);
1365 std::tie(DLoc, Block) = getOneDebugLoc(Cloner.ClonedFunc);
1369 << ore::NV("Function", Cloner.OrigFunc)
1371 << ore::NV("OutlinedRegionOriginalSize", Cloner.OutlinedRegionCost)
1378 assert(Cloner.OrigFunc->users().empty() &&
1381 std::vector<User *> Users(Cloner.ClonedFunc->user_begin(),
1382 Cloner.ClonedFunc->user_end());
1385 auto CalleeEntryCount = Cloner.OrigFunc->getEntryCount();
1387 computeCallsiteToProfCountMap(Cloner.ClonedFunc, CallSiteToProfCountMap);
1400 if (!shouldPartialInline(CS, Cloner, WeightedRcost, CallerORE))
1406 OR << ore::NV("Callee", Cloner.OrigFunc) << " partially inlined into "
1413 (Cloner.ClonedOI ? Cloner.OutlinedFunctions.back().first
1428 if (Cloner.ClonedOI)
1436 Cloner.IsFunctionInlined = true;
1438 Cloner.OrigFunc->setEntryCount(
1440 OptimizationRemarkEmitter OrigFuncORE(Cloner.OrigFunc);
1442 return OptimizationRemark(DEBUG_TYPE, "PartiallyInlined", Cloner.OrigFunc)