Lines Matching defs:ChecksToHoist
188 SmallVectorImpl<Value *> &ChecksToHoist,
216 /// to generate an expression computing the logical AND of \p ChecksToHoist
223 mergeChecks(SmallVectorImpl<Value *> &ChecksToHoist,
227 /// Generate the logical AND of \p ChecksToHoist and \p OldCondition and make
229 Value *hoistChecks(SmallVectorImpl<Value *> &ChecksToHoist,
296 /// Can we compute the logical AND of \p ChecksToHoist and \p ChecksToWiden
298 bool isWideningCondProfitable(SmallVectorImpl<Value *> &ChecksToHoist,
300 return mergeChecks(ChecksToHoist, ChecksToWiden, /*InsertPt=*/std::nullopt)
304 /// Widen \p ChecksToWiden to fail if any of \p ChecksToHoist is false
305 void widenGuard(SmallVectorImpl<Value *> &ChecksToHoist,
309 auto MergedCheck = mergeChecks(ChecksToHoist, ChecksToWiden, InsertPt);
311 : hoistChecks(ChecksToHoist,
381 SmallVector<Value *> ChecksToHoist;
382 parseWidenableGuard(Instr, ChecksToHoist);
386 if (ChecksToHoist.empty() ||
387 (ChecksToHoist.size() == 1 && isa<ConstantInt>(ChecksToHoist.front())))
429 ChecksToHoist, CandidateChecks);
452 widenGuard(ChecksToHoist, ChecksToWiden, BestSoFar);
462 BasicBlock::iterator WideningPoint, SmallVectorImpl<Value *> &ChecksToHoist,
478 if (!canBeHoistedTo(ChecksToHoist, WideningPoint))
494 if (isWideningCondProfitable(ChecksToHoist, ChecksToWiden))
721 GuardWideningImpl::mergeChecks(SmallVectorImpl<Value *> &ChecksToHoist,
733 // ChecksToHoist and ChecksToWiden.
734 if (ChecksToWiden.size() == 1 && ChecksToHoist.size() == 1 &&
737 match(ChecksToHoist.front(),
769 parseRangeChecks(ChecksToHoist, Checks) &&
787 // We were not able to compute ChecksToHoist AND ChecksToWiden for the price
792 Value *GuardWideningImpl::hoistChecks(SmallVectorImpl<Value *> &ChecksToHoist,
795 assert(!ChecksToHoist.empty());
797 makeAvailableAt(ChecksToHoist, InsertPt);
799 Value *Result = Builder.CreateAnd(ChecksToHoist);