Lines Matching defs:Cloner

278   getOutliningCallBBRelativeFreq(FunctionCloner &Cloner) const;
282 bool shouldPartialInline(CallBase &CB, FunctionCloner &Cloner,
289 bool tryPartialInline(FunctionCloner &Cloner);
326 // basic block Cloner.OutliningCallBB;
328 computeOutliningCosts(FunctionCloner &Cloner) const;
679 FunctionCloner &Cloner) const {
680 BasicBlock *OutliningCallBB = Cloner.OutlinedFunctions.back().second;
682 Cloner.ClonedFuncBFI->getBlockFreq(&Cloner.ClonedFunc->getEntryBlock());
684 Cloner.ClonedFuncBFI->getBlockFreq(OutliningCallBB);
694 if (hasProfileData(*Cloner.OrigFunc, *Cloner.ClonedOI))
719 CallBase &CB, FunctionCloner &Cloner, BlockFrequency WeightedOutliningRcost,
724 assert(Callee == Cloner.ClonedFunc);
741 << NV("Callee", Cloner.OrigFunc)
750 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into "
760 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into "
778 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into "
792 << NV("Callee", Cloner.OrigFunc) << " can be partially inlined into "
865 PartialInlinerImpl::computeOutliningCosts(FunctionCloner &Cloner) const {
867 for (auto FuncBBPair : Cloner.OutlinedFunctions) {
880 assert(OutlinedFunctionCost >= Cloner.OutlinedRegionCost &&
887 2 * InlineConstants::getInstrCost() * Cloner.OutlinedFunctions.size();
891 (OutlinedFunctionCost - Cloner.OutlinedRegionCost) +
1258 FunctionCloner Cloner(&F, OMRI.get(), ORE, LookupAssumptionCache, GetTTI);
1266 bool DidOutline = Cloner.doMultiRegionFunctionOutlining();
1271 Cloner.ClonedFunc->print(dbgs());
1275 if (tryPartialInline(Cloner))
1288 FunctionCloner Cloner(&F, OI.get(), ORE, LookupAssumptionCache, GetTTI);
1289 Cloner.normalizeReturnBlock();
1291 Function *OutlinedFunction = Cloner.doSingleRegionFunctionOutlining();
1296 if (tryPartialInline(Cloner))
1302 bool PartialInlinerImpl::tryPartialInline(FunctionCloner &Cloner) {
1303 if (Cloner.OutlinedFunctions.empty())
1306 auto OutliningCosts = computeOutliningCosts(Cloner);
1317 if (Cloner.ClonedOI)
1318 RelativeToEntryFreq = getOutliningCallBBRelativeFreq(Cloner);
1334 if (!SkipCostAnalysis && Cloner.OutlinedRegionCost < SizeCost) {
1335 OptimizationRemarkEmitter OrigFuncORE(Cloner.OrigFunc);
1338 std::tie(DLoc, Block) = getOneDebugLoc(*Cloner.ClonedFunc);
1342 << ore::NV("Function", Cloner.OrigFunc)
1344 << ore::NV("OutlinedRegionOriginalSize", Cloner.OutlinedRegionCost)
1351 assert(Cloner.OrigFunc->users().empty() &&
1354 std::vector<User *> Users(Cloner.ClonedFunc->user_begin(),
1355 Cloner.ClonedFunc->user_end());
1358 auto CalleeEntryCount = Cloner.OrigFunc->getEntryCount();
1360 computeCallsiteToProfCountMap(Cloner.ClonedFunc, CallSiteToProfCountMap);
1377 if (!shouldPartialInline(*CB, Cloner, WeightedRcost, CallerORE))
1383 OR << ore::NV("Callee", Cloner.OrigFunc) << " partially inlined into "
1390 (Cloner.ClonedOI ? Cloner.OutlinedFunctions.back().first
1406 if (Cloner.ClonedOI)
1413 Cloner.IsFunctionInlined = true;
1415 Cloner.OrigFunc->setEntryCount(Function::ProfileCount(
1417 OptimizationRemarkEmitter OrigFuncORE(Cloner.OrigFunc);
1419 return OptimizationRemark(DEBUG_TYPE, "PartiallyInlined", Cloner.OrigFunc)