Page MenuHomePhabricator

[MemCpyOpt] Port to MemorySSA
Needs ReviewPublic

Authored by nikic on Sun, Oct 11, 8:22 AM.

Details

Reviewers
asbirlea
fhahn
Summary

This is a straightforward port of MemCpyOpt to MemorySSA following the approach of D26739. MemDep queries are replaced with MSSA queries without changing the overall structure of the pass. Some care has to be taken to account for differences between these APIs (MemDep also returns reads, MSSA doesn't).

Diff Detail

Event Timeline

nikic created this revision.Sun, Oct 11, 8:22 AM
nikic requested review of this revision.Sun, Oct 11, 8:22 AM
nikic added inline comments.Sun, Oct 11, 8:26 AM
llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
342

What would be a good way to do that?

MSxDOS added a subscriber: MSxDOS.Wed, Oct 14, 2:21 AM
nikic added a comment.Wed, Oct 14, 1:32 PM

Some preliminary compile-time numbers: https://llvm-compile-time-tracker.com/index.php?branch=nikic/perf/memcpy-mssa The last commits are, from the bottom to top: Enabling MSSA DSE, enabling MSSA MemCpyOpt and moving one MemCpyOpt pass next to a DSE pass, to avoid an additional computation of MSSA. The last two commits together actually end up being a mild compile-time improvement. So at least this looks viable.

CMakeFiles/7zip-benchmark.dir/CPP/7zip/Compress/ShrinkDecoder.cpp.o 4KiB 4KiB (+0.44%)

Small codesize regression?