[PATCH] D146464: [LSR] Fix "new use of poison" problem in lsr-term-fold

Philip Reames via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 20 15:11:00 PDT 2023


reames created this revision.
reames added reviewers: nikic, eopXD.
Herald added subscribers: StephenFan, bollu, hiraditya, mcrosier.
Herald added a project: All.
reames requested review of this revision.
Herald added a project: LLVM.

This models the approach used in LFTR.  The short summary is that we need to prove the IV is not dead first, and then we have to either prove the poison flag is valid after the new user or delete it.

There is one key differences between this and LFTR, specifically, I allow a non-concrete start to the IV.  The goal of LFTR is to canonicalize and IVs with constant starts are canonical, so the very restrictive definition there is mostly okay.  Here on the other hand, we're explicitly moving *away* from the canonical form, and thus need to handle non-constant starts.

Note that this analysis is quite expensive compile time wise.  I have made no effort to optimize (yet).


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D146464

Files:
  llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
  llvm/test/Transforms/LoopStrengthReduce/lsr-term-fold.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146464.506742.patch
Type: text/x-patch
Size: 6586 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230320/aaaaf294/attachment.bin>


More information about the llvm-commits mailing list