reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
535 if (!SI->isSimple()) return false; 543 if (SI->getMetadata(LLVMContext::MD_nontemporal)) 546 const DataLayout &DL = SI->getModule()->getDataLayout(); 549 if (LoadInst *LI = dyn_cast<LoadInst>(SI->getOperand(0))) { 551 LI->getParent() == SI->getParent()) { 562 Instruction *P = SI; 563 for (auto &I : make_range(++LI->getIterator(), SI->getIterator())) { 574 if (P && P != SI) { 575 if (!moveUp(AA, SI, P, LI)) 586 if (!AA.isNoAlias(MemoryLocation::get(SI), LoadLoc)) 595 SI->getPointerOperand(), findStoreAlignment(DL, SI), 595 SI->getPointerOperand(), findStoreAlignment(DL, SI), 599 SI->getPointerOperand(), findStoreAlignment(DL, SI), 599 SI->getPointerOperand(), findStoreAlignment(DL, SI), 602 LLVM_DEBUG(dbgs() << "Promoting " << *LI << " to " << *SI << " => " 605 MD->removeInstruction(SI); 606 SI->eraseFromParent(); 628 Value *CpyDest = SI->getPointerOperand()->stripPointerCasts(); 631 MemoryLocation StoreLoc = MemoryLocation::get(SI); 632 for (BasicBlock::iterator I = --SI->getIterator(), E = C->getIterator(); 649 LI, SI->getPointerOperand()->stripPointerCasts(), 651 DL.getTypeStoreSize(SI->getOperand(0)->getType()), 652 findCommonAlignment(DL, SI, LI), C); 654 MD->removeInstruction(SI); 655 SI->eraseFromParent(); 671 auto *V = SI->getOperand(0); 673 if (Instruction *I = tryMergingIntoMemset(SI, SI->getPointerOperand(), 673 if (Instruction *I = tryMergingIntoMemset(SI, SI->getPointerOperand(), 685 unsigned Align = SI->getAlignment(); 688 IRBuilder<> Builder(SI); 690 Builder.CreateMemSet(SI->getPointerOperand(), ByteVal, Size, Align); 692 LLVM_DEBUG(dbgs() << "Promoting " << *SI << " to " << *M << "\n"); 694 MD->removeInstruction(SI); 695 SI->eraseFromParent();