[PATCH] D110547: [MemCpyOpt] Use EarliestEscapeInfo instead of callCapturesBefore.

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 27 06:07:03 PDT 2021


fhahn created this revision.
fhahn added reviewers: asbirlea, nikic.
Herald added a subscriber: hiraditya.
fhahn requested review of this revision.
Herald added a project: LLVM.

D110368 <https://reviews.llvm.org/D110368> exposed 'earliest escape' handling in BatchAA. We can use this
via BatchAA instead of the single call of callCapturesBefore in
MemCpyOpt to improve the results in most cases.

On SPEC2006/SPEC2017/MultiSource we get the following changes:

  Metric: memcpyopt.NumCallSlot
  
  test-suite.../CINT2006/403.gcc/403.gcc.test    17.00  26.00       52.9%
  test-suite...510.parest_r/510.parest_r.test   718.00 773.00        7.7%
  test-suite...006/447.dealII/447.dealII.test    12.00  12.00        0.0%
  test-suite...yApps-C++/PENNANT/PENNANT.test     9.00   9.00        0.0%
  test-suite...speed/602.gcc_s/602.gcc_s.test    15.00  14.00       -6.7%
  test-suite...7rate/502.gcc_r/502.gcc_r.test    15.00  14.00       -6.7%
  
  Metric: memcpyopt.NumMemCpyInstr
  test-suite.../CINT2006/403.gcc/403.gcc.test     47.00   62.00      31.9%
  test-suite...510.parest_r/510.parest_r.test   1600.00 1654.00       3.4%
  test-suite...006/447.dealII/447.dealII.test    108.00  108.00       0.0%
  test-suite...marks/7zip/7zip-benchmark.test     10.00   10.00       0.0%
  test-suite...yApps-C++/PENNANT/PENNANT.test     13.00   13.00       0.0%
  test-suite...speed/602.gcc_s/602.gcc_s.test     91.00   90.00      -1.1%
  test-suite...7rate/502.gcc_r/502.gcc_r.test     91.00   90.00      -1.1%
  
  Metric: memcpyopt.NumMoveToCpy
  test-suite...marks/7zip/7zip-benchmark.test     4.00  19.00       375.0%
  test-suite...006/447.dealII/447.dealII.test   122.00 150.00        23.0%
  test-suite...510.parest_r/510.parest_r.test   322.00 394.00        22.4%
  test-suite...speed/602.gcc_s/602.gcc_s.test      NaN    NaN          NaN
  test-suite...7rate/502.gcc_r/502.gcc_r.test      NaN    NaN          NaN
  test-suite.../CINT2006/403.gcc/403.gcc.test      NaN    NaN          NaN
  test-suite...yApps-C++/PENNANT/PENNANT.test      NaN   4.00          NaN

No changes for memcpyopt.NumMemSetInfer

Compile-time impact

NewPM-O3: +0.02  (outlier mafft +0.31%)
NewPM-ReleaseThinLTO: +0.01% (no notable outliers)
NewPM-ReleaseLTO-g: +0.03% (no notable outliers)


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D110547

Files:
  llvm/include/llvm/Analysis/AliasAnalysis.h
  llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
  llvm/lib/Analysis/BasicAliasAnalysis.cpp
  llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
  llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
  llvm/test/Transforms/MemCpyOpt/callslot.ll
  llvm/test/Transforms/MemCpyOpt/load-store-to-memcpy.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110547.375235.patch
Type: text/x-patch
Size: 9379 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210927/de7d890f/attachment.bin>


More information about the llvm-commits mailing list