Lines Matching defs:Cand

141                                  const StoreToLoadForwardingCandidate &Cand) {
142 OS << *Cand.Store << " -->\n";
143 OS.indent(2) << *Cand.Load << "\n";
276 for (const auto &Cand : Candidates) {
281 LoadToSingleCand.insert(std::make_pair(Cand.Load, &Cand));
291 if (Cand.Store->getParent() == OtherCand->Store->getParent() &&
292 Cand.isDependenceDistanceOfOne(PSE, L) &&
295 if (getInstrIndex(OtherCand->Store) < getInstrIndex(Cand.Store))
296 OtherCand = &Cand;
302 Candidates.remove_if([&](const StoreToLoadForwardingCandidate &Cand) {
303 if (LoadToSingleCand[Cand.Load] != &Cand) {
306 << Cand
424 propagateStoredValueToLoadUsers(const StoreToLoadForwardingCandidate &Cand,
441 Value *Ptr = Cand.Load->getPointerOperand();
448 new LoadInst(Cand.Load->getType(), InitialPtr, "load_initial",
449 /* isVolatile */ false, Cand.Load->getAlign(),
461 Type *StoreType = Cand.Store->getValueOperand()->getType();
462 auto &DL = Cand.Load->getDataLayout();
468 Value *StoreValue = Cand.Store->getValueOperand();
472 Cand.Store->getIterator());
476 cast<Instruction>(StoreValue)->setDebugLoc(Cand.Load->getDebugLoc());
481 Cand.Load->replaceAllUsesWith(PHI);
482 PHI->setDebugLoc(Cand.Load->getDebugLoc());
526 for (const StoreToLoadForwardingCandidate &Cand : StoreToLoadDependences) {
527 LLVM_DEBUG(dbgs() << "Candidate " << Cand);
531 if (!doesStoreDominatesAllLatches(Cand.Store->getParent(), L, DT))
537 if (isLoadConditional(Cand.Load, L))
542 if (!Cand.isDependenceDistanceOfOne(PSE, L))
545 assert(isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Load->getPointerOperand())) &&
548 isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Store->getPointerOperand())) &&
551 Candidates.push_back(Cand);
609 const StoreToLoadForwardingCandidate &Cand) {
611 PSE.getSCEV(Cand.Load->getPointerOperand())) ||
613 PSE.getSCEV(Cand.Store->getPointerOperand()));
622 for (const auto &Cand : Candidates)
623 propagateStoredValueToLoadUsers(Cand, SEE);