[all-commits] [llvm/llvm-project] 05e4f7: [DSE] Remove noop stores after killing stores for ...

Florian Hahn via All-commits all-commits at lists.llvm.org
Fri Oct 30 02:41:05 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 05e4f7bde95a83192b84f8bb1e6bcd416343154c
      https://github.com/llvm/llvm-project/commit/05e4f7bde95a83192b84f8bb1e6bcd416343154c
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2020-10-30 (Fri, 30 Oct 2020)

  Changed paths:
    M llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
    M llvm/test/Transforms/DeadStoreElimination/MSSA/calloc-store.ll
    M llvm/test/Transforms/DeadStoreElimination/MSSA/noop-stores.ll

  Log Message:
  -----------
  [DSE] Remove noop stores after killing stores for a MemoryDef.

Currently we fail to eliminate some noop stores if there is a kill-able
store between the starting def and the load. This is because we
eliminate noop stores first.

In practice it seems like eliminating noop stores after the main
elimination for a def covers slightly more cases.

This patch improves the number of stores slightly in 2 cases for X86 -O3
-flto

Same hash: 235 (filtered out)
Remaining: 2
Metric: dse.NumRedundantStores

Program                                          base      patch diff
 test-suite...ce/Benchmarks/PAQ8p/paq8p.test     2.00   3.00 50.0%
 test-suite...006/453.povray/453.povray.test    18.00  21.00 16.7%

There might be other phase ordering issues, but it appears that they do
not show up in the test-suite/SPEC2000/SPEC2006. We can always tune the
ordering later.

Partly fixes PR47887.

Reviewed By: asbirlea, zoecarver

Differential Revision: https://reviews.llvm.org/D89650




More information about the All-commits mailing list