Lines Matching refs:Cand

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