[PATCH] D26739: [MemCpyOpt] Port to MemorySSA. Disabled by default.

bryant via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 16 03:27:15 PST 2016


bryant created this revision.
bryant added reviewers: dberlin, hfinkel.
bryant added a subscriber: llvm-commits.
bryant set the repository for this revision to rL LLVM.
Herald added a reviewer: deadalnix.

This creates a MemorySSA-backed analogue of MemCpyOpt that is disabled by
default. It can be enabled by passing to opt either its pass-specific flag
(`-memcpyopt-mssa`) or a force flag (e.g., `-O3 -mco-mssa`).

In order to facilitate code review and correctness checking, the changes have
been made to resemble as closely as possible the pattern matching and
transformation logic of the legacy pass. In particular, non-local results from
`MemorySSAWalker::getClobberingMemoryAccess`/`getCMA` are ignored since the
MemDep version can only see patterns within a single block. The idea is to land
this patch first before adding back non-locality and other more sophisticated
matchers.


Repository:
  rL LLVM

https://reviews.llvm.org/D26739

Files:
  include/llvm-c/Transforms/Scalar.h
  include/llvm/InitializePasses.h
  include/llvm/Transforms/Scalar.h
  include/llvm/Transforms/Scalar/MemCpyOptimizer.h
  lib/Passes/PassRegistry.def
  lib/Transforms/Scalar/MemCpyOptimizer.cpp
  lib/Transforms/Scalar/Scalar.cpp
  test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll
  test/Transforms/GVN/pr24426.ll
  test/Transforms/MemCpyOpt/2008-02-24-MultipleUseofSRet.ll
  test/Transforms/MemCpyOpt/2008-03-13-ReturnSlotBitcast.ll
  test/Transforms/MemCpyOpt/2011-06-02-CallSlotOverwritten.ll
  test/Transforms/MemCpyOpt/align.ll
  test/Transforms/MemCpyOpt/atomic.ll
  test/Transforms/MemCpyOpt/callslot_aa.ll
  test/Transforms/MemCpyOpt/callslot_deref.ll
  test/Transforms/MemCpyOpt/callslot_throw.ll
  test/Transforms/MemCpyOpt/capturing-func.ll
  test/Transforms/MemCpyOpt/crash.ll
  test/Transforms/MemCpyOpt/fca2memcpy.ll
  test/Transforms/MemCpyOpt/form-memset.ll
  test/Transforms/MemCpyOpt/invariant.start.ll
  test/Transforms/MemCpyOpt/lifetime.ll
  test/Transforms/MemCpyOpt/loadstore-sret.ll
  test/Transforms/MemCpyOpt/memcpy-to-memset-with-lifetimes.ll
  test/Transforms/MemCpyOpt/memcpy-to-memset.ll
  test/Transforms/MemCpyOpt/memcpy-undef.ll
  test/Transforms/MemCpyOpt/memcpy.ll
  test/Transforms/MemCpyOpt/memmove.ll
  test/Transforms/MemCpyOpt/memset-memcpy-redundant-memset.ll
  test/Transforms/MemCpyOpt/memset-memcpy-to-2x-memset.ll
  test/Transforms/MemCpyOpt/nontemporal.ll
  test/Transforms/MemCpyOpt/pr29105.ll
  test/Transforms/MemCpyOpt/profitable-memset.ll
  test/Transforms/MemCpyOpt/smaller.ll
  test/Transforms/MemCpyOpt/sret.ll
  test/Transforms/Util/combine-alias-scope-metadata.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26739.78157.patch
Type: text/x-patch
Size: 125694 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161116/7b18d532/attachment-0001.bin>


More information about the llvm-commits mailing list