Lines Matching refs:Cloner

279   getOutliningCallBBRelativeFreq(FunctionCloner &Cloner) const;
283 bool shouldPartialInline(CallBase &CB, FunctionCloner &Cloner,
290 bool tryPartialInline(FunctionCloner &Cloner);
329 computeOutliningCosts(FunctionCloner &Cloner) const;
727 FunctionCloner &Cloner) const { in getOutliningCallBBRelativeFreq()
728 BasicBlock *OutliningCallBB = Cloner.OutlinedFunctions.back().second; in getOutliningCallBBRelativeFreq()
730 Cloner.ClonedFuncBFI->getBlockFreq(&Cloner.ClonedFunc->getEntryBlock()); in getOutliningCallBBRelativeFreq()
732 Cloner.ClonedFuncBFI->getBlockFreq(OutliningCallBB); in getOutliningCallBBRelativeFreq()
742 if (hasProfileData(*Cloner.OrigFunc, *Cloner.ClonedOI)) in getOutliningCallBBRelativeFreq()
767 CallBase &CB, FunctionCloner &Cloner, BlockFrequency WeightedOutliningRcost, in shouldPartialInline() argument
772 assert(Callee == Cloner.ClonedFunc); in shouldPartialInline()
789 << NV("Callee", Cloner.OrigFunc) in shouldPartialInline()
798 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into " in shouldPartialInline()
808 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into " in shouldPartialInline()
826 << NV("Callee", Cloner.OrigFunc) << " not partially inlined into " in shouldPartialInline()
840 << NV("Callee", Cloner.OrigFunc) << " can be partially inlined into " in shouldPartialInline()
912 PartialInlinerImpl::computeOutliningCosts(FunctionCloner &Cloner) const { in computeOutliningCosts()
914 for (auto FuncBBPair : Cloner.OutlinedFunctions) { in computeOutliningCosts()
927 assert(OutlinedFunctionCost >= Cloner.OutlinedRegionCost && in computeOutliningCosts()
934 2 * InlineConstants::InstrCost * Cloner.OutlinedFunctions.size(); in computeOutliningCosts()
938 (OutlinedFunctionCost - Cloner.OutlinedRegionCost) + in computeOutliningCosts()
1306 FunctionCloner Cloner(&F, OMRI.get(), ORE, LookupAssumptionCache, GetTTI); in unswitchFunction() local
1314 bool DidOutline = Cloner.doMultiRegionFunctionOutlining(); in unswitchFunction()
1319 Cloner.ClonedFunc->print(dbgs()); in unswitchFunction()
1323 if (tryPartialInline(Cloner)) in unswitchFunction()
1336 FunctionCloner Cloner(&F, OI.get(), ORE, LookupAssumptionCache, GetTTI); in unswitchFunction() local
1337 Cloner.normalizeReturnBlock(); in unswitchFunction()
1339 Function *OutlinedFunction = Cloner.doSingleRegionFunctionOutlining(); in unswitchFunction()
1344 if (tryPartialInline(Cloner)) in unswitchFunction()
1350 bool PartialInlinerImpl::tryPartialInline(FunctionCloner &Cloner) { in tryPartialInline() argument
1351 if (Cloner.OutlinedFunctions.empty()) in tryPartialInline()
1358 auto OutliningCosts = computeOutliningCosts(Cloner); in tryPartialInline()
1368 if (Cloner.ClonedOI) in tryPartialInline()
1369 RelativeToEntryFreq = getOutliningCallBBRelativeFreq(Cloner); in tryPartialInline()
1384 if (!SkipCostAnalysis && Cloner.OutlinedRegionCost < SizeCost) { in tryPartialInline()
1385 OptimizationRemarkEmitter OrigFuncORE(Cloner.OrigFunc); in tryPartialInline()
1388 std::tie(DLoc, Block) = getOneDebugLoc(*Cloner.ClonedFunc); in tryPartialInline()
1392 << ore::NV("Function", Cloner.OrigFunc) in tryPartialInline()
1394 << ore::NV("OutlinedRegionOriginalSize", Cloner.OutlinedRegionCost) in tryPartialInline()
1401 assert(Cloner.OrigFunc->users().empty() && in tryPartialInline()
1404 std::vector<User *> Users(Cloner.ClonedFunc->user_begin(), in tryPartialInline()
1405 Cloner.ClonedFunc->user_end()); in tryPartialInline()
1408 auto CalleeEntryCount = Cloner.OrigFunc->getEntryCount(); in tryPartialInline()
1410 computeCallsiteToProfCountMap(Cloner.ClonedFunc, CallSiteToProfCountMap); in tryPartialInline()
1427 if (!shouldPartialInline(*CB, Cloner, WeightedRcost, CallerORE)) in tryPartialInline()
1433 OR << ore::NV("Callee", Cloner.OrigFunc) << " partially inlined into " in tryPartialInline()
1440 (Cloner.ClonedOI ? Cloner.OutlinedFunctions.back().first in tryPartialInline()
1456 if (Cloner.ClonedOI) in tryPartialInline()
1463 Cloner.IsFunctionInlined = true; in tryPartialInline()
1465 Cloner.OrigFunc->setEntryCount(Function::ProfileCount( in tryPartialInline()
1467 OptimizationRemarkEmitter OrigFuncORE(Cloner.OrigFunc); in tryPartialInline()
1469 return OptimizationRemark(DEBUG_TYPE, "PartiallyInlined", Cloner.OrigFunc) in tryPartialInline()