[all-commits] [llvm/llvm-project] 012173: [LoopIdiom] let the pass deal with runtime memset ...

Yueh-Ting Chen via All-commits all-commits at lists.llvm.org
Sat Aug 14 04:22:20 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 012173680f368bff9b4e3db21e1381360422cdc6
      https://github.com/llvm/llvm-project/commit/012173680f368bff9b4e3db21e1381360422cdc6
  Author: eopXD <yueh.ting.chen at gmail.com>
  Date:   2021-08-14 (Sat, 14 Aug 2021)

  Changed paths:
    M llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
    A llvm/test/Transforms/LoopIdiom/memset-runtime-debug.ll
    A llvm/test/Transforms/LoopIdiom/memset-runtime.ll

  Log Message:
  -----------
  [LoopIdiom] let the pass deal with runtime memset size

The current LIR does not deal with runtime-determined memset-size. This patch
utilizes SCEV and check if the PointerStrideSCEV and the MemsetSizeSCEV are equal.
Before comparison the pass would try to fold the expression that is already
protected by the loop guard.

Testcase file `memset-runtime.ll`, `memset-runtime-debug.ll` added.

This patch deals with proper loop-idiom. Proceeding patch wants to deal with SCEV-s
that are inequal after folding with the loop guards.

Reviewed By: lebedev.ri, Whitney

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




More information about the All-commits mailing list