reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Scalar/MemCpyOptimizer.cpp
  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();