Lines Matching refs:Region
224 /// Get the benefit score of outlining \p Region.
225 static int getOutliningBenefit(ArrayRef<BasicBlock *> Region,
230 for (BasicBlock *BB : Region)
239 /// Get the penalty score for outlining \p Region.
240 static int getOutliningPenalty(ArrayRef<BasicBlock *> Region,
266 for (BasicBlock *BB : Region) {
275 if (find(Region, SuccBB) == Region.end()) {
284 LLVM_DEBUG(dbgs() << "Applying bonus for: " << Region.size()
286 Penalty -= Region.size();
301 const BlockSequence &Region, const CodeExtractorAnalysisCache &CEAC,
304 assert(!Region.empty());
307 CodeExtractor CE(Region, &DT, /* AggregateArgs */ false, /* BFI */ nullptr,
316 int OutliningBenefit = getOutliningBenefit(Region, TTI);
318 getOutliningPenalty(Region, Inputs.size(), Outputs.size());
324 Function *OrigF = Region[0]->getParent();
341 LLVM_DEBUG(llvm::dbgs() << "Outlined Region: " << *OutF);
344 &*Region[0]->begin())
353 &*Region[0]->begin())
355 << ore::NV("Block", Region.front());
591 for (OutliningRegion &Region : Regions) {
592 if (Region.empty())
595 if (Region.isEntireFunctionCold()) {
605 bool RegionsOverlap = any_of(Region.blocks(), [&](const BlockTy &Block) {
611 OutliningWorklist.emplace_back(std::move(Region));
624 OutliningRegion Region = OutliningWorklist.pop_back_val();
625 assert(!Region.empty() && "Empty outlining region in worklist");
627 BlockSequence SubRegion = Region.takeSingleEntrySubRegion(*DT);
640 } while (!Region.empty());