[llvm] [MemCpyOpt] Calculate the offset value to forward `memcpy` (PR #87190)
Quentin Dian via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 1 18:00:24 PDT 2024
================
@@ -1152,11 +1188,12 @@ bool MemCpyOptPass::processMemCpyMemCpyDependence(MemCpyInst *M,
//
// TODO: If the code between M and MDep is transparent to the destination "c",
// then we could still perform the xform by moving M up to the first memcpy.
- // TODO: It would be sufficient to check the MDep source up to the memcpy
- // size of M, rather than MDep.
- if (writtenBetween(MSSA, BAA, MemoryLocation::getForSource(MDep),
- MSSA->getMemoryAccess(MDep), MSSA->getMemoryAccess(M)))
+ if (writtenBetween(MSSA, BAA, MCopyLoc, MSSA->getMemoryAccess(MDep),
+ MSSA->getMemoryAccess(M))) {
+ if (MForwardOffset > 0 && CopySource->use_empty())
+ cast<Instruction>(CopySource)->eraseFromParent();
----------------
DianQK wrote:
Yes. :)
https://github.com/llvm/llvm-project/pull/87190
More information about the llvm-commits
mailing list